This service tests the validity of an RSS 2.0 feed, checking to see that it follows the rules of the RSS specification. For advice from the RSS Advisory Board on how to implement RSS and handle issues such as enclosures and HTML encoding, read the RSS Best Practices Profile. This checker is also a validator of Atom and RSS 1.0 feeds.
Use this tester regularly to ensure that your RSS feed continues to work well in the wide audience of RSS readers, podcast clients and other software that supports the format.
This feed does not validate.
<?xml-stylesheet href="/rss-style.xsl" type="text/xsl"?><feed version="2.0" ...
^
... href="https://www-gem.codeberg.page/"/><head><link rel="self" href="htt ...
^
line 3, column 387: (75 occurrences) [help]
... oint for a beginner.</p></summary></entry><entry><id>https://www-g ...
^
In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendations.
line 103, column 699: (3 occurrences) [help]
... ished><updated>2025-08-02T14:05:00-04:00</updated><summary type="html"> ...
^
line 209, column 0: (2 occurrences) [help]
<button class="copy_pre" onclick="navigator.clipboard.writeText(document. ...
line 211, column 0: (2 occurrences) [help]
<div id="pre_0"><div class="highlight"><pre tabindex="0" styl ...
line 211, column 0: (2 occurrences) [help]
<div id="pre_0"><div class="highlight"><pre tabindex="0" styl ...
<?xml-stylesheet href="/rss-style.xsl" type="text/xsl"?><feed version="2.0" xmlns="http://www.w3.org/2005/Atom"><id>https://www-gem.codeberg.page/</id><link rel="self" href="https://www-gem.codeberg.page/feed.xml"/><link rel="alternate" href="https://www-gem.codeberg.page/"/><head><link rel="self" href="https://www-gem.codeberg.page/feed.xml"/></head><title>www-gem words:</title><updated>2026-02-16T12:37:34-05:00</updated><entry><id>https://www-gem.codeberg.page/cli_jj/</id><title>Jujutsu gets me into VCS</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_jj/"/><published>2026-02-16T12:37:34-05:00</published><updated>2026-02-16T12:37:34-05:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img></p><p>For years, git has been the undisputed champion of version control systems (VCS). It&rsquo;s powerful, ubiquitous, and the industry standard. But as a newcomer, it felt difficult to get used to its functioning and to perform even the simplest tasks. Concepts like the &ldquo;staging area,&rdquo; &ldquo;detached HEAD,&rdquo; and the sheer terror of rebase was a labyrinth where I get lost.</p><p>Jujutsu (jj) is a younger contender that aims to demystify version control. It&rsquo;s built with a fresh perspective, prioritizing a more intuitive workflow and a gentler learning curve, especially for those just dipping their toes into the world of code management. So, let&rsquo;s see why jj may be a more delightful starting point for a beginner.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_rofi2/</id><title>Rofi is not a bar by design</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_rofi2/"/><published>2026-02-15T09:23:30-05:00</published><updated>2026-02-15T09:23:30-05:00</updated><summary type="html"> <p>I&rsquo;m using <a href="https://github.com/davatorium/rofi" title="rofi" target="_blank">Rofi</a>as <a href="/sys_rofi/">a launcher</a>for almost everything on my system. This is done using the power of scripts. I&rsquo;m also using Rofi as a temporary bar to show my system information (time, disk usage, network status, battery&hellip;).<br>Few weeks ago, I decided to revisit this setup to optimize it, meaning integrating the launchers in this bar. Basically, replicating a &ldquo;more traditional&rdquo; bar like Waybar.</p></summary></entry><entry><id>https://www-gem.codeberg.page/monthly_0126/</id><title>Level Up Log January 2026</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/monthly_0126/"/><published>2026-02-14T16:16:20-05:00</published><updated>2026-02-14T16:16:20-05:00</updated><summary type="html"> <p><img src="/img/log.png" class="topic"></img> My small learnings<br>in January 2026</p><p>This is the first post of the new Level Up Log section and it&rsquo;s late&hellip; I was so excited with this idea that I had to post it, sorry.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_bmm/</id><title>Bookmark manager: bmm</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_bmm/"/><published>2026-01-29T19:09:48-05:00</published><updated>2026-01-29T19:09:48-05:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img> <a href="https://github.com/dhth/bmm" target="_blank">bmm</a>is a slick CLI/TUI bookmark manager that’s all about speed and simplicity. The project aims to give you super-quick bookmark access and management without the bloat you didn’t ask for or the sluggish performance that even your old laptop fans judge you for.</p><!-- more --><h2 id="where-bmm-shines">Where bmm shines<a class="hlink" href="#where-bmm-shines"></a></h2><p>I’ve recently been involved in a discussion on Lemmy where someone didn’t know that such a tool existed and couldn’t understand the need for it. So let’s look at why bmm exists and who it’s for:</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_login/</id><title>The cost of login</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_login/"/><published>2026-01-28T15:04:38-05:00</published><updated>2026-01-28T15:04:38-05:00</updated><summary type="html"> <p>A post that’s slightly off the usual general topic of this blog, but in today’s digital world - where our personal info is connected to tons of apps and online services for work and personal life - it’s more important than ever to understand what <strong>personal</strong> information really means.</p><p>Have you ever wondered how your life turned into a never-ending “Sign in to continue”? Every new app promises freedom, convenience, and maybe even enlightenment&hellip; but the reality is something we prefer to ignore. &ldquo;Hey! I&rsquo;m not stupid, I know what I&rsquo;m doing, and it&rsquo;s my choice!&rdquo;. The dumb stuff I post here isn’t meant to judge your choices, but it’s okay (and healthy) to question them. Sometimes we just need a little nudge to get that started, because what began as a careful, well-thought-out first decision can slowly turn into a habit. After that, we may keep making the same choices without really rethinking them, just assuming the original reasons still apply.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_helix_neovim/</id><title>Helix may be what you need</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_helix_neovim/"/><published>2026-01-23T09:01:38-05:00</published><updated>2026-01-23T09:01:38-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>Helix or Neovim? Neovim or Helix? That is the question. A bold one, sure—but really, it’s just one tiny debate in the massive world of text editors.</p><p>I previously wrote why I&rsquo;ve chosen <a href="/vim_why-not-another-text-editor/">Neovim as my text editor</a>and this post is not intended to pretend Neovim is superior to any other options, nor to convince anyone to move to it. No, this post is the result of a discussion with <a href="https://mastodon.social/@alecsargent@social.linux.pizza" target="_blank">alecsargent</a>, a long time Helix user who is currently considering Neovim as a potential viable option after having tried Vim long time ago.</p><p>At some point, many terminal-centric Linux users run into the same dilemma: Do I want to invest time and cognitive effort into building my <em>ideal</em> text/code editor with Neovim and rework my muscle memory, or am I content with the features offered by Helix, accepting its hardcoded defaults?</p><p>This isn’t just about picking a text editor. It’s about philosophy, commitment, and how much control you want over your tools.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_desk/</id><title>My minimal desk setup</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_desk/"/><published>2026-01-22T09:42:39-05:00</published><updated>2026-01-22T09:42:39-05:00</updated><summary type="html"> <p>Welcome at my desk, take a sit. For years, my workspace resembled a digital archaeologist&rsquo;s dig site—layers of peripheral detritus, tangled cables, and screensavers fighting for visual dominance. It was a chaotic symphony, a testament to the idea that a busy mind equals a cluttered space. However, as I deepened my dive into the Linux ecosystem and its ethos of efficiency and control, I realized my environment wasn&rsquo;t just a reflection of my work; it was actively shaping it. This epiphany led me down the rabbit hole of minimalist desk setups, and what I discovered transformed not only my workspace but also my productivity and peace of mind.</p><p>My journey to minimalism wasn&rsquo;t about deprivation; it was about intentionality. It was about stripping away the non-essentials to make room for what truly matters: focus, comfort, and efficiency. This post will detail why I now advocate for a clean, ergonomic, and thoughtfully designed workspace.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_neogit/</id><title>[Plugin] Git in Neovim: Neogit</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_neogit/"/><published>2026-01-19T10:02:09-05:00</published><updated>2026-01-19T10:02:09-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img> When dealing with code, version control is essential, and Git is the undisputed champion. But if you&rsquo;re like me, you prefer to stay within your text editor as much as possible, avoiding the constant context switching to the terminal to run Git commands. That&rsquo;s where <a href="https://github.com/NeogitOrg/neogit" target="_blank">Neogit</a>comes in. This <a href="/vim_why-not-another-text-editor/">Neovim</a>plugin brings the power of Git directly into your editing workflow, offering a seamless and intuitive interface to manage your repositories.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_structure/</id><title>Hybrid file organization</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_structure/"/><published>2025-12-21T15:15:07-05:00</published><updated>2025-12-21T15:15:07-05:00</updated><summary type="html"> <p>I must emphasize how engaging with people sparks interesting discussions and ideas. These exchanges often serves as a catalyst for writing.<br>Recently I&rsquo;ve had an exchange with <a href="https://lazybear.social/@hyde" target="_blank">Hyde</a>about the diverse file structure systems. Over the years, I&rsquo;ve experimented with some of them. In this blog post, I&rsquo;ll share my experience combining the flexibility of the PARA (Project, Areas, Resources, Archives) system with the structure provided by Johnny.Decimal (JD).</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_design/</id><title>App design: discoverability vs efficiency</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_design/"/><published>2025-12-04T14:59:19-05:00</published><updated>2025-12-04T14:59:19-05:00</updated><summary type="html"> <p>The Linux community on Mastodon is a vibrant example of what a truly open and inclusive space can be. It&rsquo;s full of passionate individuals who are not only deeply committed to the values of open-source software but also dedicated to fostering a collaborative environment. People here are open-minded, always ready to engage in thoughtful discussions, and they approach differing opinions with respect and curiosity. Mastodon allows me to interact with very interesting people. I am grateful to have the chance to exchange on regular basis with some of them thrgouh private communications.</p><p>Yesterday, I came across one of <a href="https://mastodon.social/@tedchoward" target="_blank">Ted&rsquo;s posts</a>saying that &ldquo;the conventional wisdom says that if you want to sell software the Mac is the best platform because Mac users would be willing to pay a premium for a well-designed application. Linux would be the worst platform because most Linux would rather tolerate a poorly designed free application than pay for a well designed app.&rdquo; Since I&rsquo;ve recently wrote about <a href="/sys_graph/">apps design</a>, I engage a conversation with him.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_task-nvim/</id><title>Neovim/Taskwarrior interaction</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_task-nvim/"/><published>2025-11-23T12:22:41-05:00</published><updated>2025-11-23T19:22:41-05:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img>As someone who uses <a href="/vim_why-not-another-text-editor/">Neovim</a>as default text/code editor, I’ve always loved its simplicity and flexibility. After a discussion with a group of folks on mastodon, I&rsquo;ve decided to use this flexibility to allow some interaction between Neovim and Taskwarrior. I use Taskwarrior to track everything from work tasks to personal projects, and while it’s a fantastic tool - when I don&rsquo;t need something more complete like <a href="/cli_taskjuggler/">Taskjuggler</a>- I didn’t want to keep bouncing between Taskwarrior and Neovim just to add, update, or delete tasks. It felt like an unnecessary interruption in my flow. As a bonus, being able to quickly find where my tasks are mentioned in my text files, then why not? :)</p></summary></entry><entry><id>https://www-gem.codeberg.page/hugo_series/</id><title>Post series</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/hugo_series/"/><published>2025-11-15T13:38:38-05:00</published><updated>2025-11-15T13:38:38-05:00</updated><summary type="html"> <p><img src="/img/hugo.png" class="topic"></img>Inspired by <a href="https://mtwb.blog/posts/2025/blog-updates-series/" target="_blank">Matt Weber&rsquo;s blog post series</a>, I decided to implement a similar feature in my blog. Because I&rsquo;m not smart enough and lazy, I get the code from <a href="https://blog.cavelab.dev/2025/01/hugo-navigate-series/" target="_blank">Thomas&rsquo; blog</a>and streamlined it to my needs.<br>I will not explain everything again here. I&rsquo;m happy to get people checking his blog. That&rsquo;s the minimum I owe him :)</p><p>You can see exactly how this looks like on my blog <a href="/cli_neomutt1/">at the bottom of this post</a>for example.</p></summary></entry><entry><id>https://www-gem.codeberg.page/hugo_template/</id><title>Using a blog template</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/hugo_template/"/><published>2025-11-15T13:27:30-05:00</published><updated>2025-11-15T13:27:30-05:00</updated><summary type="html"> <p><img src="/img/hugo.png" class="topic"></img>The repetitive part of creating a blog post is completing the front matter, but this can be simplified using automation.<br>All you need to pre-populate your post front matters is a simple blog.md template in your achetypes theme folder.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_ui/</id><title>Does beautiful mean powerful?</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_ui/"/><published>2025-11-13T19:06:37-05:00</published><updated>2025-11-13T19:06:37-05:00</updated><summary type="html"> <p>I recently participated in a conversation where I felt like an outlier once again due to my preference for minimal system graphics. While I&rsquo;m aware of my not-so-young age and potential biases stemming from a love for minimalism in general, I needed to understand why I have this preference and whether I should reconsider it.</p><p>Short answer: hell no, I’m perfect and have all the answers. Who wouldn’t want to bask in the glory of owning the truth, right?</p><p>OK, let&rsquo;s be a little bit more serious&hellip;</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_neomutt3/</id><title>The power of emails in the terminal: Neomutt (3/3)</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_neomutt3/"/><published>2025-11-12T20:35:37-05:00</published><updated>2025-11-12T20:35:37-05:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img></p><h2 id="notmuch-is-it">Notmuch, is it?<a class="hlink" href="#notmuch-is-it"></a></h2><p>Beyond its unassuming name, it revolutionizes email searching. This tool perfectly integrates into your workflow and will help you retrieve any email instantly due to its lightning-fast speed and comprehensive filtering system.</p><p>Using the <code>vfolder-from-query</code> command (see the <a href="#-keybindings">keybindings section</a>), you can perfom any <code>Notmuch</code> search you like. For example:</p><ul><li><code>notmuch search &quot;meeting&quot;</code><br>Search your entire email archive for specific keywords</li><li><code>notmuch search tag:inbox &quot;project&quot;</code><br>Search for emails with specific tags</li><li><code>notmuch search -tag:spam &quot;important&quot;</code><br>Exclude emails with a certain tag from the search</li><li><code>notmuch search has:attachment</code><br>Search emails with attachment</li><li><code>notmuch search filename:*.pdf</code><br>Search emails with pdf attachment</li><li><code>notmuch search &quot;from:alice AND to:bob AND subject:report&quot;</code><br>Search with multiple filters using boolean operators</li></ul><h2 id="davmail">Davmail<a class="hlink" href="#davmail"></a></h2><p>If, like me, you are forced to use Outlook services <a href="https://github.com/mguessan/davmail" target="_blank"><code>Davmail</code></a>could be a life saver. It&rsquo;s a POP/IMAP/SMTP/Caldav/Carddav/LDAP gateway allowing users to use any mail client with Exchange, even from the internet through Outlook Web Access.<br>I let you check the link above to see how to configure it. Don&rsquo;t worry, it&rsquo;s a GUI and it&rsquo;s pretty straightforward. Jut make sure to use <code>localhost</code> and the right ports for your imap and smtp in your config files.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_neomutt2/</id><title>The power of emails in the terminal: Neomutt (2/3)</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_neomutt2/"/><published>2025-11-12T20:34:37-05:00</published><updated>2025-11-12T20:34:37-05:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img></p><h2 id="accounts-specific-config">Accounts-specific config<a class="hlink" href="#accounts-specific-config"></a></h2><p>Stored in the <code>[account_name]</code> file in the mutt folder. Make sure it matches the name used in your <code>.muttrc</code> file.</p><h2 id="neomutt-is-not-boring">Neomutt is not boring<a class="hlink" href="#neomutt-is-not-boring"></a></h2><p>Neomutt can use icons as shown in the <code>muttrc</code> file, but you can also make it looks pretty. This is done by defining your colors in the <code>colors</code> file located in the mutt folder.<br>The basic structure for each color definition is <code>color &lt;element&gt; &lt;foreground&gt; &lt;background&gt;</code></p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_neomutt1/</id><title>The power of emails in the terminal: Neomutt (1/3)</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_neomutt1/"/><published>2025-11-12T20:33:37-05:00</published><updated>2025-11-12T20:33:37-05:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img></p><p>If you’ve ever opened your email in a web browser and felt that creeping frustration: the endless tabs, the sluggish loading, the feeling that your messages are trapped in some glossy corporate interface, then today’s story is for you.<br>I&rsquo;ll talk about a way that’s been quietly thriving for decades among developers, system administrators, and people who simply love the feeling of control: Neomutt</p><p>This has been my way to make my inbox becoming a text interface where every action feels immediate, powerful, and minimal. Also, we&rsquo;re no longer living in the 50s, and a terminal interface doesn&rsquo;t have to be boring.</p><p>In this post series, I assume you have Neomutt installed and your accounts configured. I&rsquo;ll focus on sharing some post config info I found crucial in my workflow, but rarely mentioned online.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_typst/</id><title>A new typesetting system: Typst</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_typst/"/><published>2025-11-12T11:12:14-05:00</published><updated>2025-11-12T11:12:14-05:00</updated><summary type="html"> <p>Have you ever heard about <a href="https://github.com/typst/typst" target="_blank">Typst</a>? Personally, I first encountered it a few months ago, but didn&rsquo;t try it until very recently. In the past, I used LaTeX to create quite advanced scientific documents. However, after some time not using it, I had forgotten about its somewhat challenging code. Today, I use <a href="/sys_groff">Groff</a>— while it may be overkill because it&rsquo;s capable of much more than I currently need — it was easier to use from scratch.</p><p>Then came Typst, which is the new contender in the world of document formatting. Overall, it can achieve the same things as its predecessors while introducing an even easier way of formatting your documents. After resisting the urge to test it for months, I finally gave it a try and eventually adopted it as my go-to typesetting tool.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_keybindings_2/</id><title>Tweaked (Neo)Vim keybindings</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_keybindings_2/"/><published>2025-11-04T15:30:26-05:00</published><updated>2025-11-04T15:30:26-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>After <a href="/vim_keybindings/">my list of the default (neo)vim keybindings</a>I use the most, here are few tweaks I made to some default keybindings to streamline my workflow.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_keybindings/</id><title>(Neo)Vim keybindings</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_keybindings/"/><published>2025-11-04T10:51:35-05:00</published><updated>2025-11-04T10:51:35-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>For the past few years, Neovim has become <a href="/vim_why-not-another-text-editor/">my go-to text editor</a>for everything from coding to note-taking. I&rsquo;ve spent some time sharing keybindings that I&rsquo;ve found indispensable to my workflow through random social media posts, so I thought it would be worthwhile to group them in a more convenient form. Here is a list of <a href="#-motion">motion</a>, <a href="#-delete">delete</a>, <a href="#-search">search</a>, and <a href="#-replace">replace</a>keybindings I use daily, as well as a few that I’m working on becoming more familiar with myself. Whether you’re a seasoned (neo)vim user or just starting out with it, these tips should help you get more out of your editing experience.</p><p>This is not intended to be an exhaustive list of keybindings, but feel free to share of your favorite ones I may have missed.</p><p>Beyond these default keybindings, I&rsquo;ve also shared a very short list of my preferred tweaked commands and keybindings <a href="/vim_keybindings_2/">here</a>.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_niri/</id><title>Niri: hello Wayland</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_niri/"/><published>2025-08-16T15:44:15-04:00</published><updated>2025-08-30T19:45:15-04:00</updated><summary type="html"> <p>Time for a new hidden gem, though it has recently received quite some attention. <a href="https://github.com/YaLTeR/niri" target="_blank">Niri</a>is a Wayland compositor and has been my door to this protocol. Niri is a compositor like Sway (i3 for Wayland) or Hyprland (for those who want shiny transitions and code their own animations) for example.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_Framework13-2/</id><title>The Framework 13: 2.5 months review</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_Framework13-2/"/><published>2025-08-02T14:05:00-04:00</published><updated>2025-08-02T14:05:00-04:00</updated><summary type="html"> <p>After 2.5 months of daily use, I can now offer a more comprehensive review of my <a href="/sys_Framework13-1/">Framework 13 laptop</a>(AMD Ryzen™ 5 7640U), and objectively compare the reality of ownership to my initial expectations.Here is the take home message for the lazy readers: I have no complaints at all and only nice surprises. For the rest of the audience here are the details.<br>It&rsquo;s worth noting that 1) I will not comment on the fact that everything is working flawlessly, because that was expecting per the Archwiki, and 2) my discussion is focused only on the hardware I utilize regularly. I haven&rsquo;t mentioned specific components like the webcam, even though I have been extremely impressed with the few tests I&rsquo;ve done.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_Framework13-1/</id><title>New laptop: Framework 13. The last one?</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_Framework13-1/"/><published>2025-05-24T11:07:55-04:00</published><updated>2025-08-02T14:05:00-04:00</updated><summary type="html"> <p>Warnings:</p><ul><li>This post is my thoughts after one day of use of a new laptop I&rsquo;ve been waiting for 1.5 year, so I&rsquo;m still under endorphins.</li><li>I&rsquo;ve spent $1,200 in what some would call an under powered machine, so I&rsquo;m biased.</li><li>I will skip all the details that make Framework&rsquo;s laptops unique. This has already been covered by others.</li></ul><p>With that out of the way, I would like to share my first impressions on the Framework 13 and how it compares to all I read and to my old Dell XPS13.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_picom/</id><title>Animations with picom</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_picom/"/><published>2025-05-22T16:22:08-04:00</published><updated>2025-05-22T16:22:08-04:00</updated><summary type="html"> <p>I&rsquo;ve relied on Compositor in X11 for years to manage window transparency. My tiling manager doesn&rsquo;t display borders or gaps, and I find decorations distracting. Initially, I used Picom leveraging only its basic functionality. I&rsquo;ve long considered animations counterproductive and visually taxing. However, I discovered that Picom allows custom animation creation (you learn everyday with Linux). The level of customization offers both extensive personalization options and the ability to maintain a lightweight setup which piqued my interest.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_yazi/</id><title>A complete cli file manager: yazi</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_yazi/"/><published>2024-11-28T16:16:22-05:00</published><updated>2024-11-28T16:16:22-05:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img> Like everyone else, I&rsquo;ve started navigating and managing my files with GUI apps, but soon realized that a CLI tool would better integrate into my workflow. Then I encountered some limitations and used the power of <a href="/blog/zsh/">Zsh</a>to complete this task directly from the commandline.</p><p>I kept an eye open for any CLI alternatives though, because in a few circumstances large file manipulations were still tricky. I&rsquo;ve tried different approaches, but one thing that definitely brought me back to the straight commandline is the fuzzy find search (<a href="/cli_fzf/">Fzf</a>), until I came across <a href="https://github.com/sxyazi/yazi" target="_blank">Yazi</a>.</p><p>After few months of daily use, I think I can recommend it.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_groff/</id><title>What's Groff?</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_groff/"/><published>2024-09-08T08:08:47-04:00</published><updated>2024-09-08T08:08:47-04:00</updated><summary type="html"> <p>Around 2010, I used LaTeX to write scientific papers and my resume but it has been a struggle every single time I started working on a new document. The reason being that LaTeX has a quite steep learning curve and I forgot everything because I was not using it regularly enough.</p><p>Nowadays, I need LaTeX even less frequently but I still prefer to use this type of approach to write some documents when needed. Hence, I was looking for something &ldquo;more accessible&rdquo; without sacrificing of functionality. I know it looks like I was looking for the impossible&hellip; but then I came across Groff.</p><p>Before talking about Groff itself, let&rsquo;s quickly add some context. Everything started with roff that was primarily designed for typesetting research papers and technical documents. Roff introduced the concept of macros, which allowed users to define reusable formatting commands, making it easier to structure and format documents.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_surround/</id><title>[Plugin] You're surrounded and that's good: nvim-surround</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_surround/"/><published>2024-09-07T07:49:56-04:00</published><updated>2024-09-07T07:49:56-04:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img> Writing in a text editor would be cumbersome if it was just about typing one letter after the other, then removing one letter after the other to correct your text, and start over again and again. We are lucky to have smart people in our community who build tools to make the writing process more enjoyable and help us improve our productivity. This is the case of the <a href="https://github.com/kylechui/nvim-surround" target="_blank">kylechui/nvim-surround neovim plugin</a>. Taking advantage of brackets, parentheses, and quotes, this plugin simplifies text manipulation.<br>It provides a set of commands for quickly adding, removing, and changing pairs of characters around a selected piece of text. It&rsquo;s particularly useful for tasks like wrapping text in HTML tags, creating function calls, or even just balancing your parentheses.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_config/</id><title>Exploring my Neovim config</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_config/"/><published>2024-09-05T21:01:47-04:00</published><updated>2024-09-05T21:01:47-04:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img> I&rsquo;ve always been fascinated by the power of customizing my development environment to suit my needs. For text editor, this journey began with vim and now Neovim. I use it for notes taking, to organize my thoughts in a zettle way, for coding, and to write emails (with <a href="https://github.com/neomutt/neomutt" target="_blank">neomutt</a>).</p><p>Over time, I&rsquo;ve refined my Neovim setup to create a powerful and efficient workflow. In this blog post, we&rsquo;ll embark on a detailed exploration of my current Neovim configuration, examining each line and explaining its purpose and benefits.</p><p>Whether you&rsquo;re a new Neovim user or a more advanced user, you may find some valuable insights as we go through the lines. Vim users can also easily steal some ideas to port them into their config.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_life-org/</id><title>Keep your liveS on track</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_life-org/"/><published>2024-05-12T11:57:12-04:00</published><updated>2024-05-12T11:57:12-04:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img> Notes taking has became extremely trendy over the last few years and there&rsquo;s a whole business with pseudo philosophy and theories to support it. That being said, managing both personal and professional lives is a daunting task that goes way beyond notes. With the proliferation of tools and apps designed to help us stay organized, the challenge lies not in the lack of options but in finding the right one that seamlessly integrates both aspects of our lives. I&rsquo;m sharing here the tools I&rsquo;ve chosen for my own needs, why I chose them, and how I use them. This will include managing entire projects, to-do lists, agendas, and schedules.</p><p>You thought you had one life&hellip; you actually have more. Let&rsquo;s see how you could get the best of them.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_sxhkd/</id><title>sxhkd: why another keybinders?</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_sxhkd/"/><published>2024-02-18T12:34:00-05:00</published><updated>2024-02-18T12:34:00-05:00</updated><summary type="html"> <p>The concept of keybinders should not be a secret for you. If you&rsquo;re using a tiling windows manager, you are even probably already familiar with assigning keyboard shortcuts to actions within its configuration file. That&rsquo;s what I used to do for years using awesomewm, i3, or dwm. Once I moved to bspwm, I&rsquo;ve also be introduced to <a href="https://github.com/baskerville/sxhkd" target="_blank">sxhkd</a>and I first missed the point of yet another keybinders. Let&rsquo;s see why sxhkd stands out among the various keybinders available for Linux.</p></summary></entry><entry><id>https://www-gem.codeberg.page/zsh_fzf/</id><title>Bring the power of fzf into your Zsh</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/zsh_fzf/"/><published>2024-02-02T14:57:15-05:00</published><updated>2024-02-02T14:57:15-05:00</updated><summary type="html"> <p><img src="/img/zsh.png" class="topic"></img></img> If you&rsquo;ve been following this blog, you know that I&rsquo;m <a href="/cli_fzf/">fzf</a>addict. I use it for a lot of things in Neovim (<em>e.g.</em> file search, paths integration, <a href="/vim_notes/">notes</a>&hellip;), to search for online videos with <a href="/cli_ytfzf/">ytfzf</a>, and in Zsh. Today I&rsquo;d like to talk about the latter.</p><p>I use <a href="https://github.com/junegunn/fzf" target="_blank">Fzf</a>developed by junegunn to browse my files (which I now find it way faster and efficient than using a file browser), as a replacement to the default Zsh history, and to search text within files.</p></summary></entry><entry><id>https://www-gem.codeberg.page/hugo_images/</id><title>Improve images performance</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/hugo_images/"/><published>2024-01-20T16:08:07-05:00</published><updated>2024-01-20T16:08:07-05:00</updated><summary type="html"> <p><img src="/img/hugo.png" class="topic"></img> Testing my blog on <a href="https://pagespeed.web.dev/" target="_blank">web.dev</a>I realized that it could benefit from some improvement and especially in regards to images processing. After some online searches, I discovered that:</p><ul><li>even though images are not exactly content or assets, storing them in the static/ folder is not the best option contrary to what I&rsquo;ve read several times when building this blog</li><li>the default hugo shortcode to show your images is not the most optimized one</li></ul></summary></entry><entry><id>https://www-gem.codeberg.page/sys_nixos/</id><title>A new journey begins: NixOS (part one)</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_nixos/"/><published>2024-01-18T22:00:54-05:00</published><updated>2024-01-18T22:00:54-05:00</updated><summary type="html"> <p>I&rsquo;ve been an Arch user for the past 15 years, and in the early days, it provided a challenging but rewarding experience for learning Linux. There was no easy installation process, manual configuration of xorg, and various other fun tasks that helped me gain extensive knowledge. Nowadays, Arch is perfectly tailored to suit my requirements, fulfilling all my needs without exception. It may be worth mentioning that my needs are relatively basic, including office work, digital drawing, and simple coding. Despite the misconceptions of non-Arch users, Arch is stable, and I don&rsquo;t have to update it every hour.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_sioyek/</id><title>A PDF reader under steroids: sioyek</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_sioyek/"/><published>2024-01-10T18:04:19-05:00</published><updated>2024-01-10T18:04:19-05:00</updated><summary type="html"> <p>For years, zathura has been my PDF reader of choice. I liked it simplicity, efficiency, clean look, and customization. I could see very few features missing but there were ways to workaround that and no other PDF reader was able to offer me the same pleasant experience. That was true until I came across <a href="https://github.com/ahrm/sioyek" target="_blank">sioyek</a>.<br>Being focused on textbooks and research papers, it brings some very interesting features that may even appeal to people who are simply looking for a way to make their PDF navigation more efficient, especially when jumping to/from tables (more on that later).</p><p>A demo worth a thousand words and there is an <a href="https://www.youtube.com/watch?v=RaHRvnb0dY8" title="sioyek" target="_blank">excellent one</a>provided by the developer him/herself:</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_ambient_light/</id><title>Brightness auto adjustment</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_ambient_light/"/><published>2024-01-05T11:13:16-05:00</published><updated>2024-01-05T11:13:16-05:00</updated><summary type="html"> <p>If your machine is equipped with a light sensor, you can set it up to auto adjust to the ambient light level. I found this feature to be good but not very well suited to my need. Sometimes an auto adjustment was made when I did not want it and sometimes it was not made at the exact time I needed it.<br>This is the reason why I came up with a script.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_deft_pro/</id><title>My first trackball: Elecom Deft Pro</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_deft_pro/"/><published>2024-01-03T14:08:42-05:00</published><updated>2024-04-19T11:50:00-05:00</updated><summary type="html"> <p>Have you ever been interested in trackball but could not find one that suit your needs, or you did not really see why it would be useful, or you did not want to lose your current mouse ergonomic position? I was in the same situation because I did not want to go with a thumb trackball and I did not invest enough time at first and stick to the flagships offered by logitech and kensigton. Recently though, I realized that 1) fingers trackball was a thing, 2) configurable buttons were an option, 3) I can preserve the hand position I currently have with my vertical mouse. So today, I&rsquo;ll be sharing my few days experience with the Elecom Deft Pro trackball.<br>Note that I am not using the device for gaming purposes, my impressions are limited to its performance for work-related tasks</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_luarocks/</id><title>Luarocks and hererocks issue</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_luarocks/"/><published>2023-10-07T15:12:01-04:00</published><updated>2023-10-07T15:12:01-04:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img> For quite some weeks, (neo)vim was complaining with this message: <code>luarocks.lua:104: Failed to install hererocks</code></p><p>(neo)vim was still fully functional though so I just skipped this error message and used it. Now that things settled down a little bit, I had time to look into this problem and I&rsquo;m writing down the fix here for anyone who would experience the same issue.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_endwise/</id><title>[Plugin] Automatic pairing for your code: tpope/vim_endwise</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_endwise/"/><published>2023-08-02T13:59:56-04:00</published><updated>2023-08-02T13:59:56-04:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img> Tim Pope is a well-known (neo)vim plugin developer so it&rsquo;s no surprise that this blog mentions another of them: <a href="https://github.com/tpope/vim-endwise" title="endwise" target="_blank">tpope/vim-endwise.</a>This plugin is a gem that brings automated completion and insertion of closing characters in your code.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_ale/</id><title>[Plugin] No more errors in your code with vim-ale</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_ale/"/><published>2023-06-22T19:50:13-04:00</published><updated>2023-06-22T19:50:13-04:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img> Are you tired of constantly having to manually check your code for errors and inefficiencies? Look no further than <a href="https://github.com/dmerejkowsky/vim-ale" title="vim-ale" target="_blank">dmerejkowsky/vim-ale</a>.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_taskjuggler/</id><title>Take the control of your project management: taskjuggler</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_taskjuggler/"/><published>2023-06-20T11:06:00-04:00</published><updated>2023-06-20T11:06:00-04:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img> Have you ever found it challenging to keep track of all the tasks and deadlines involved in a project? Some tools can help you dealing with that but they may lack the ability to adapt to the variety of your projects complexity and/or they may lack a command line interface (which is obviously a mandatory factor of choice :) ). The remedy is an open-source project management tool called <a href="https://taskjuggler.org/" title="taskjuggler" target="_blank">TaskJuggler</a>.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_tgpt/</id><title>ChatGPT in your terminal</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_tgpt/"/><published>2023-06-06T19:20:53-04:00</published><updated>2023-06-06T19:20:53-04:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img> ChatGPT is the new tool that everybody is talking about. Whether you may like it or you&rsquo;re scared of it, you may be interested in using its power in your terminal for daily tasks.That&rsquo;s what offer <a href="https://github.com/aandrew-me/tgpt" title="tgpt" target="_blank">tgpt</a>. Written in Go, it uses ChatGPT 3.5 and communicates with the Backend of Bai chatbot. The best part of it is that it doesn&rsquo;t require any API keys to be used !</p></summary></entry><entry><id>https://www-gem.codeberg.page/zsh_autonotify/</id><title>[Plugin] Autonotification in zsh</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/zsh_autonotify/"/><published>2023-06-04T19:59:13-04:00</published><updated>2023-06-04T19:59:13-04:00</updated><summary type="html"> <p><img src="/img/zsh.png" class="topic"></img></img> If you&rsquo;re someone who frequently uses the terminal and often finds yourself forgetting whether a command has finished running or not, then the <a href="https://github.com/MichaelAquilina/zsh-auto-notify" title="auto-notify" target="_blank">zsh-auto-notify plugin</a>from Michael Aquilina is here to make your life easier.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_ultisnips/</id><title>[Plugin] Don't be a robot, use one: ultisnips</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_ultisnips/"/><published>2023-05-22T13:29:13-04:00</published><updated>2023-05-22T13:29:13-04:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img> Do you ever find yourself typing the same thing over and over again? It can be a real drag on your productivity. Well, the <a href="https://github.com/SirVer/ultisnips" title="ultisnips" target="_blank">SirVer/ultisnips plugin</a>is your lifesaver.</p><p>SirVer/ultisnips is a plugin for (neo)im that lets you create custom snippets of code. You can use it to make shortcuts for frequently used code snippets, functions, or even entire blocks of code or text. That means you can spend less time typing and more time working on your content.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_vale/</id><title>Write like a pro with vale</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_vale/"/><published>2023-05-17T22:28:21-04:00</published><updated>2023-05-17T22:28:21-04:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img> <a href="https://vale.sh/" title="vale" target="_blank">Vale</a>is an open-source linter that provides real-time feedback on grammar, style, and tone, helping you improve the quality of your content. When integrated into (neo)vim, this powerful combo can help you write and edit like a pro.</p><h2 id="what-writing-like-a-pro-means">What writing like a pro means?<a class="hlink" href="#what-writing-like-a-pro-means"></a></h2><ol><li>Catching mistakes before they happen</li></ol><p>With vale, you won&rsquo;t have to worry about typos or grammatical errors slipping through the cracks. Vale&rsquo;s real-time feedback alerts you to potential mistakes as you write, so you can make corrections on the spot.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_corne2/</id><title>My [uni]Corne keyboard (Part 2/2)</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_corne2/"/><published>2023-04-13T21:22:53-04:00</published><updated>2023-04-13T21:22:53-04:00</updated><summary type="html"> <h2 id="a-hardware-always-hide-a-software">A hardware always hide a software<a class="hlink" href="#a-hardware-always-hide-a-software"></a></h2><p>A wired corne uses the quantum mechanical keyboard (QMK) firmware to run on the Nice!Nano but if you go with a wireless version you will need the zephyr mechanical keyboard (ZMK) open-source firmware.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_corne1/</id><title>My [uni]Corne keyboard (Part 1/2)</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_corne1/"/><published>2023-04-10T18:44:38-04:00</published><updated>2023-04-10T18:44:38-04:00</updated><summary type="html"> <p>Let me start this post with a statement and some brief personal history. I&rsquo;m not the type of person to buy something for its marketing features (and no judgement for people who are doing otherwise) and I need to see tangible benefits in any new hardware before considering buying it. For these reasons I didn&rsquo;t buy any new piece of computing equipment for years but as you guessed I eventually did it&hellip;</p><p>So the new member of the family is a 36-key corne wireless keyboard and it was not even on the list of candidates when I&rsquo;ve started my searches. I&rsquo;ve spent at least 3 years thinking about which model I would go with knowing that all the hype around mechanical keyboard was the main first thing that refrained me from spending money on a new keyboard. Wait?! You don&rsquo;t want a super cool mechnical keyboard but you just bought one? Are you stupid? The answer is yes but&hellip; :) It&rsquo;s complicated so let&rsquo;s try to organize this post as logical as possible.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_fzf/</id><title>Fuzz is fun: fzf</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_fzf/"/><published>2023-03-24T21:28:15-04:00</published><updated>2023-03-24T21:28:15-04:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img>Whether you&rsquo;re dealing with several projects at once or you&rsquo;re just looking for this single file, it&rsquo;s useful to be able to get to what you&rsquo;re looking for quickly and easily. There&rsquo;s several options out there but they usually rely on your habits (so need time to become efficient) and are limited by the fact that they need to learn your new habits and they are a kind of &ldquo;evolved&rdquo; autocompletion but you still need to know the path you&rsquo;re trying to reach. In addition, this does not allow you to limit your search in a given directory if needed.</p><p>When you are looking for a new file, one you don&rsquo;t access so often, or one you barely remember the name, you end up relying on your dysfunctional brain unless&hellip; you know about <a href="https://github.com/junegunn/fzf" title="fzf" target="_blank">fzf</a>.</p><p>Before digging into fzf, note that we&rsquo;ll focus on its terminal use herebut it&rsquo;s also a great tool to use in (neo)vim <em>(post to come)</em>.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_stow/</id><title>Manage your config files easily with stow</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_stow/"/><published>2023-03-23T20:19:19-04:00</published><updated>2023-03-23T20:19:19-04:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img>Several tools relies on config files for their functioning and these files are most commonly placed in the $HOME, $HOME/.config/&lt;app_dir&gt;, or $HOME/&lt;app_dir&gt; directories. This renders the maintenance of config files a little bit cumbersome but there&rsquo;s a solution to each problem and in this case it&rsquo;s named <a href="https://github.com/aspiers/stow/" title="stow" target="_blank">stow</a>.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_tabs/</id><title>[Plugin] Buffers tabs in Neovim: barbar</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_tabs/"/><published>2023-03-22T11:53:25-04:00</published><updated>2023-03-22T11:53:25-04:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>Keeping your opened files organized has always been a challenge and people have developed tools to help us with this task (windows manager, windows switchers, file explorers&hellip;) but tabs are certainly one of the biggest player here. We use them everywhere from text editors to web browsers.<br>Neovim is no exception and offers a variety of ways to manage your buffers. My personal preference went for <a href="https://github.com/romgrk/barbar.nvim" title="barbar.nvim" target="_blank">barbar.nvim</a></p></summary></entry><entry><id>https://www-gem.codeberg.page/zsh_highlights/</id><title>[Plugin] Highlight your zsh</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/zsh_highlights/"/><published>2023-03-12T16:44:04-04:00</published><updated>2023-03-12T16:44:04-04:00</updated><summary type="html"> <p><img src="/img/zsh.png" class="topic"></img></img>Typing too fast while tired is the perfect combo for mistakes. Also, the more mistakes you will do in your terminal commands the more you will get frustrated and tired. Sometimes you may even spend minutes looking at your commands with crossed-eyes before figuring out which character is wrong.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_normal/</id><title>It's normal to use (Neo)Vim</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_normal/"/><published>2023-03-06T18:11:06-05:00</published><updated>2023-03-06T18:11:06-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>If you&rsquo;re a (meo)vim user, you&rsquo;re extremely familiar with the normal mode of course but have you ever heard of command <code>normal</code> (shorter <code>norm</code>). If yes, then you just saved yourself 3 minutes of reading ^^ Otherwise, let me try to explain this wonderful command to you.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_save_position/</id><title>Automatically save your position in (Neo)Vim on closing</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_save_position/"/><published>2023-03-03T22:20:14-05:00</published><updated>2023-03-03T22:20:14-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>If you spend quite some times writing in your preferred text editor, you know how cumbersome it is to look where you were the last time you access a document.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_rofi/</id><title>Use me I'm famous: rofi</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_rofi/"/><published>2023-02-24T00:00:00-05:00</published><updated>2023-02-24T00:00:00-05:00</updated><summary type="html"> <p>While I try to share on this blog stuff that are a little bit more confidential than <em>I think</em> they should be, we will talk today about a famous program: <a href="https://github.com/davatorium/rofi" title="rofi" target="_blank">rofi</a>.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_tridactyl/</id><title>vim-like web browsing: tridactyl</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_tridactyl/"/><published>2023-02-22T00:00:00-05:00</published><updated>2023-02-22T00:00:00-05:00</updated><summary type="html"> <p>A discussion on Mastodon today reminded me about <a href="https://github.com/tridactyl/tridactyl#highlighted-features" title="tridactyl" target="_blank">tridactyl</a>. Because I use it all the time, every day, and it&rsquo;s completely non-intrusive, this is a tool I easily forget while I&rsquo;m lost when switching to another machine and instinctively try to use a keybinding in my web browser.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_sleuth/</id><title>[Plugin] Auto indent your code: sleuth.vim</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_sleuth/"/><published>2023-02-17T00:00:00-05:00</published><updated>2023-02-17T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>Let&rsquo;s make it difficult: the sleuth.vim plugin for (neo)vim, &ldquo;automatically adjusts &lsquo;shiftwidth&rsquo; and &rsquo;expandtab&rsquo; heuristically based on the current file, or, in the case the current file is new, blank, or otherwise insufficient, by looking at other files of the same type in the current and parent directories. Modelines and EditorConfig are also consulted, adding &rsquo;tabstop&rsquo;, &rsquo;textwidth&rsquo;, &rsquo;endofline&rsquo;, &lsquo;fileformat&rsquo;, &lsquo;fileencoding&rsquo;, and &lsquo;bomb&rsquo; to the list of supported options.&rdquo;<br>That&rsquo;s the definition on the <a href="https://github.com/tpope/vim-sleuth" title="sleuth" target="_blank">github page</a>and it&rsquo;s perfectly true. But that&rsquo;s a lot of technical jargon for people who are not (neo)vim nerds. In lay language, this awesome plugin will take care of indenting your code for you.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_black_hole_register/</id><title>Using the black hole register to upgrade default keybindings</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_black_hole_register/"/><published>2023-02-15T00:00:00-05:00</published><updated>2023-02-15T00:00:00-05:00</updated><summary type="html"> <p>B<img src="/img/vim.png" class="topic"></img>y default, each time you delete or change a text, that text is stored in (neo)vim register automatically. This default behavior can sometimes conflict with your workflow but this is the way I choose if a text should be stored in my clipboard when manipulating my text: using the black hole register <code>&quot;_</code>.</p></summary></entry><entry><id>https://www-gem.codeberg.page/zsh_vi-motions/</id><title>[Plugin] Extend the vi motions in (neo)vim: vi-motions</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/zsh_vi-motions/"/><published>2023-02-10T00:00:00-05:00</published><updated>2023-02-10T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/zsh.png" class="topic"></img></img>When you&rsquo;re both a (Neo)vim and Zsh user, the best of both world meets when you activate the vi motions in Zsh with the command <code>bindkey -v</code> in the Zsh config file.</p><p>This will activate few vi motions. Some of them, even though built-in Zsh, needs to be loaded. But if we could do so and add even more vi motions? That&rsquo;s what the <a href="https://github.com/zsh-vi-more/vi-motions" title="vi" target="_blank">vi-motions</a>offers. There are other plugins but this one simply fill the bill for me in terms of functionalities and simplicity.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_stay_organized/</id><title>Organization: basis for a healthy system</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_stay_organized/"/><published>2023-02-10T00:00:00-05:00</published><updated>2023-05-01T00:00:00-04:00</updated><summary type="html"> <p>We always aim at keeping our system fast, efficient, and eye candy but the more we use it the more mess we create. If one will often try to keep everything visible clean, a more incidental mess inevitably accumulate. Hence it&rsquo;s important to make sure to maintain our packages as up to date as possible while removing the unnecessary ones (including dependencies) but another good practice is to keep your config files organized.Everyone should know that the structure of the code in your files is critical and you can help yourself with this task by splitting your code to access it and maintain it more easily.</p><p>Even though I certainly do not pretend to have the ultimate solution, I try my best to organize things in a convenient way to me so let&rsquo;s take two examples of my personal configurations.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_notes/</id><title>[Plugin] Writing and organizing your notes in NeoVim: mkdnflow</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_notes/"/><published>2023-02-07T00:00:00-05:00</published><updated>2023-02-07T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>Due to my job I&rsquo;ve always had to find a solution to write and organize my notes. Today, this topic has become incredibly popular and a lots of apps have invaded our apps stores and plugins/packages managers. Since note taking is a text editor job I naturally ignored all these apps and looked at (neo)vim. With no surprise, it has quite a few options to help you here.<br>I&rsquo;ve started using <a href="https://github.com/vimwiki/vimwiki" title="vimwiki" target="_blank">vimwiki</a>but - for a reason I couldn&rsquo;t remember - I moved to <a href="https://github.com/jakewvincent/mkdnflow.nvim" title="mkdnflow" target="_blank">mkdnflow.nvim</a>. This neovim plugin checks all the boxes for my needs: scientific literature, ideas organization, rolegames scenari.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_theme/</id><title>[Plugin] Choose/switch your theme easily: nvim-base16</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_theme/"/><published>2023-02-01T00:00:00-05:00</published><updated>2023-02-01T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>The first thing you do to feel yourself home with your preferred applications is to theme them. The issue with choosing the right theme is that it can quickly becomes tedious to test one theme after the other. It would be nice to have a list of themes from which you can choose from and apply a given theme in a single command. That&rsquo;s what <a href="https://github.com/RRethy/nvim-base16" title="base16" target="_blank">nvim-base16</a>is for in neovim.</p><p>At time of writing, <code>nvim-base16</code> allows you to choose from 232 themes. Yes, two hundreds and thirty two !!! To temporary apply a theme and see if you like it, simply type <code>: colorscheme base16</code> and hit Tab. The gigantic list of theme will popup, you choose one, and click Enter. Don&rsquo;t like it? Retype the command and choose another theme.<br>Once, you find the perfect theme for you, guess what? Add the line <code>colorscheme *theme_name*</code> in your <code>vimrc</code> or <code>vim.cmd [[ colorscheme *theme_name* ]]</code> in your init.lua file and the theme will be applied automatically on startup.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_packer/</id><title>[Plugin] (Neo)Vim plugins manager: packer</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_packer/"/><published>2023-01-31T00:00:00-05:00</published><updated>2024-09-07T10:49:56-04:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>When moving back to Vim after few years &ldquo;ignoring&rdquo; it, I quickly moved to neovim and embraced the lua language which &ldquo;pushed&rdquo; me to use <a href="https://github.com/wbthomason/packer.nvim" title="packer" target="_blank">packer</a>as my plugins manager of choice.It exists a lot of (neo)vim plugins managers with different advantages/drawbacks balance depending on your needs. While I used vim-plug back in the days, I decided to move to packer because it offers:</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_gestures/</id><title>Gesture bindings</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_gestures/"/><published>2023-01-25T00:00:00-05:00</published><updated>2023-01-25T00:00:00-05:00</updated><summary type="html"> <p>If you are familiar with keybindings, you may even have reached the point where you can&rsquo;t live without them anymore and your touchpad shines like on its first day. But what if this dead piece of hardware could actually extend your quick controls? With <a href="https://github.com/bulletmark/libinput-gestures" title="libinput-gestures" target="_blank">libinput-gestures</a>you can translate touchpad gestures as commands, so I thought to be clever to call them gesture bindings by analogy to keybindings.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_ytfzf/</id><title>Online videos platforms in your terminal: ytfzf</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_ytfzf/"/><published>2023-01-21T00:00:00-05:00</published><updated>2023-01-21T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img>The definition of <a href="https://github.com/pystardust/ytfzf" title="ytfzf" target="_blank">ytfzf</a>given by its developer is that it is &ldquo;a POSIX script that helps you find Youtube videos (without API) and opens/downloads them using mpv/youtube-dl&rdquo;. And that&rsquo;s actually only the short version of what Ytfzf is.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_why-not-another-text-editor/</id><title>Why not another text editor?</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_why-not-another-text-editor/"/><published>2023-01-18T00:00:00-05:00</published><updated>2023-01-18T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>Since I&rsquo;ve wrote a <a href="/zsh_why-not-another-shell/">Why not another shell?</a>post I thought I would take some time to write a similar one for my text editor. Before anything else, I&rsquo;d like to say that this post will obviously lack tons of details, explanations, accuracy&hellip; because it would take a 200-page book to compare all the text editors available to GNU/Linux users. Also, this is not what I&rsquo;m aiming at here. One more time, I simply want to share my user experience and briefly (hence incompletely) expose to you the main reasons why neovim is my daily text editor.</p></summary></entry><entry><id>https://www-gem.codeberg.page/sys_wm-tty/</id><title>Specific WM for a given TTY</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/sys_wm-tty/"/><published>2023-01-16T00:00:00-05:00</published><updated>2023-01-16T00:00:00-05:00</updated><summary type="html"> <p>Today&rsquo;s tweak is about auto launching a given windows manager (WM) based on the TTY you&rsquo;re login from.</p><p>You may have good reasons to use different windows managers on your machine or you just like to switch from one to the other depending on your mood. Whatever your reason is, you may sometimes run both at the same time and in such situations it can be boring to have to tell your machine which WM you want to use, and it can even be more frustrating when you forget to do it and launch the same WM twice in different sessions. To help with that, you can simply link a WM to a TTY. This will allow you to have a defined WM automatically launched when you login from a specific TTY.</p></summary></entry><entry><id>https://www-gem.codeberg.page/zsh_mass_renaming/</id><title>Mass renaming in Zsh</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/zsh_mass_renaming/"/><published>2023-01-15T00:00:00-05:00</published><updated>2023-01-15T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/zsh.png" class="topic"></img></img>Renaming multiple files in one commandline may be challenging&hellip; until you discover that Zsh comes with a built-in feature called <code>zmv</code> which is unfortunately disabled by default.So the first thing you want to do is to activate it by simply adding this line to your <code>.zshrc</code>:</p><div class="pre_wrapper"><div class="pre_banner"><span class="pre_type">bash</span><button class="copy_pre" onclick="navigator.clipboard.writeText(document.getElementById(&#39;pre_0&#39;).innerText); this.innerHTML = &#39;Pasta pasted!&#39;; setTimeout(() =&gt; { this.innerHTML = &#39;Copy me&#39;; }, 2000);">Copy me</button></div><div id="pre_0"><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>autoload zmv</span></span></code></pre></div></div></div><p>Then reload Zsh and you&rsquo;re done.</p></summary></entry><entry><id>https://www-gem.codeberg.page/zsh_manage_plugins/</id><title>[Plugin] Manage your plugins without a plugins manager</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/zsh_manage_plugins/"/><published>2023-01-12T00:00:00-05:00</published><updated>2023-01-12T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/zsh.png" class="topic"></img></img>Zsh power an be extended by the use of plugins. Whenever you talk about plugins, you need to think about which plugins manager to use. Like for other tools using plugins, there are various flavor of plugins managers but with Zsh there is an alternative option: <a href="https://github.com/mattmc3/zsh_unplugged" title="noplug" target="_blank">not using a plugins manager</a>.</p></summary></entry><entry><id>https://www-gem.codeberg.page/zsh_why-not-another-shell/</id><title>Why not another shell?</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/zsh_why-not-another-shell/"/><published>2023-01-10T00:00:00-05:00</published><updated>2023-01-10T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/zsh.png" class="topic"></img></img>Ok, so this blog at time of writing has two categories that are too often subjected to trolling or opinionated views. Indeed some people like to entertain sterile fights between Vim and Emacs, and Zsh and Fish.So before starting writing here why I chose Zsh over all other shells, I&rsquo;d like to reiterate that my words only reflect my sole experience and all views exposed here are subjective. No tool is king and people who use some tools are not superior to others. GNU/Linux suffers from few people who like to irrationally promote some distros or tools but the fact is that this OS is the only one to offer its users such variety of tools from which users can built the perfect machine for their specific needs. Even better, you can customize these tools to make them even more suitable to your needs. As a consequence, each user will have a unique combination of tools with unique configurations.</p><p>That out of the way, let&rsquo;s talk about Zsh or about why I did not go with the other shells out there.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_ucollage/</id><title>Image viewer/browser: ucollage</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_ucollage/"/><published>2023-01-09T00:00:00-05:00</published><updated>2023-01-09T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img>I spent most of my time in the terminal just because I can now complete most of my tasks faster that way but - as everyone knows - image viewing in a terminal is not that great. There&rsquo;re some options to view images using specific terminals or tools but you&rsquo;re mostly limited to actually view the images, you can&rsquo;t manipulate them. You may get lucky if you&rsquo;re offered some manipulating options. Thanks to our great community, you always find the right tool for your needs and <a href="https://github.com/ckardaris/ucollage" title="ucollage" target="_blank">ucollage</a>is the tool I was looking for.</p><p>As far as I&rsquo;m concerned, browsing, viewing and manipulating images is really what makes me use ucollage so let&rsquo;s see what you get.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_motion_speedup/</id><title>Speedup your (Neo)Vim motions</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_motion_speedup/"/><published>2023-01-08T00:00:00-05:00</published><updated>2023-01-08T00:00:00-05:00</updated><summary type="html"> <p>B<img src="/img/vim.png" class="topic"></img>The first thing (would I dare saying the only one?) that should bother you in vim is the latency in vertical and horizontal motions. I mean, if you type and hold <code>j</code> for example, you cursor will move down and then freeze for few milliseconds before waking up and letting you scroll your document.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_discharge-your-neovim/</id><title>[Plugin] Discharge your Neovim</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_discharge-your-neovim/"/><published>2023-01-07T00:00:00-05:00</published><updated>2023-01-07T00:00:00-05:00</updated><summary type="html"> <p>B<img src="/img/vim.png" class="topic"></img>The beauty of GNU/Linux is to allow users to built their system to match their specific needs to perfection while also avoiding bloated tools supercharged with hundreds of functions when each user will use only few of them. In that sense, vim is no exception and comes pretty bear bone. You can add plugins to extend its capabilities and built it to suit your needs perfectly but by default vim also loads some plugins. That&rsquo;s great to make sure everything is working for a new user but when you eventually built vim the way you like it, some plugins may not be necessary anymore. Following the KISS (Keep It Simple Stupid) philosophy, there is no need to overcharge your tools with pieces you don&rsquo;t use.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_underrated-keybindings/</id><title>Underrated keybindings</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_underrated-keybindings/"/><published>2023-01-05T00:00:00-05:00</published><updated>2023-01-05T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img> I am sharing here few keybindings that helped me daily.</p><p>As you know, defining a keybinding in vim is as simple as adding this line of in your <code>vimrc</code> or <code>init.lua</code>:</p><div class="pre_wrapper"><div class="pre_banner"><span class="pre_type">bash</span><button class="copy_pre" onclick="navigator.clipboard.writeText(document.getElementById(&#39;pre_0&#39;).innerText); this.innerHTML = &#39;Pasta pasted!&#39;; setTimeout(() =&gt; { this.innerHTML = &#39;Copy me&#39;; }, 2000);">Copy me</button></div><div id="pre_0"><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>modemap key command <span style="color:#75715e"># for vimrc</span></span></span><span style="display:flex;"><span></span></span><span style="display:flex;"><span>vim.keymap.set<span style="color:#f92672">(</span> <span style="color:#e6db74">&#39;mode&#39;</span>, <span style="color:#e6db74">&#39;key&#39;</span>, <span style="color:#e6db74">&#39;command&#39;</span><span style="color:#f92672">)</span> <span style="color:#75715e"># for init.lua</span></span></span><span style="display:flex;"><span></span></span><span style="display:flex;"><span><span style="color:#75715e"># where:</span></span></span><span style="display:flex;"><span><span style="color:#75715e"># mode is n (for normal), i (for insert), v (for visual)</span></span></span><span style="display:flex;"><span><span style="color:#75715e"># key is your keypress</span></span></span><span style="display:flex;"><span><span style="color:#75715e"># command is the command to be executed by vim</span></span></span></code></pre></div></div></div></summary></entry><entry><id>https://www-gem.codeberg.page/zsh_2-keybindings-to-save-80-of-your-typing-time/</id><title>2 keybindings to save 80% of your typing time</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/zsh_2-keybindings-to-save-80-of-your-typing-time/"/><published>2023-01-04T00:00:00-05:00</published><updated>2023-01-04T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/zsh.png" class="topic"></img></img>Over the years I realized that CLI tools and the terminal offered me more customization and were more efficient to complete most of my tasks even when compared to the counterpart GUI of the same applications. For this reason, I&rsquo;ve now reached the point where using the commandline to manipulate files and folders is faster for me with the terminal rather than using a (GUI or CLI) file explorer. When I started moving that way I had to face one major limitation though: re-typing the argument used in a previous or in the current command was far from efficient and wasted so much time in the process.</p></summary></entry><entry><id>https://www-gem.codeberg.page/vim_hybrid-mode/</id><title>Hybrid mode</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/vim_hybrid-mode/"/><published>2023-01-04T00:00:00-05:00</published><updated>2023-01-04T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/vim.png" class="topic"></img>While relative numbers are handy, the “hybrid” mode is real power.</p><p>The table below comes from the <code>:help number_relativenumber</code>.</p></summary></entry><entry><id>https://www-gem.codeberg.page/cli_rss-reader-newsboat/</id><title>rss/atom reader: newsboat</title><link rel="alternate" type="text/html" href="https://www-gem.codeberg.page/cli_rss-reader-newsboat/"/><published>2023-01-04T00:00:00-05:00</published><updated>2023-01-04T00:00:00-05:00</updated><summary type="html"> <p><img src="/img/cli.png" class="topic"></img>You&rsquo;re here and after reading the first two words of this awesome blog you&rsquo;re now wondering how you may be sure to not miss any crucial news that will be posted. Don&rsquo;t panic, an RSS/Atom feed reader is the way to go.While there are plenty of options out there, I&rsquo;ve personally decided to go with <a href="https://github.com/newsboat/newsboat" target="_blank">newsboat</a>.</p><p>What makes it stands out for me:</p><ul><li>Powerful built-in HTML renderer</li><li>Filter articles out based on title, author, contents etc.</li><li>Aggregate articles into meta-feeds by arbitrary criteria</li><li>Macros to execute sequences of actions with just two keystrokes</li><li>Extend functionality with custom scripts</li><li>Apply transformations to feeds before passing them into Newsboat</li></ul><p>Let&rsquo;s talk about some of these features into a little more details:</p></summary></entry></feed>