<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yappaholic The Junior</title>
    <description>The latest articles on DEV Community by Yappaholic The Junior (@yappaholic).</description>
    <link>https://dev.to/yappaholic</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1598075%2Fa4ee107e-1ed0-4882-b89e-be117cef8152.jpg</url>
      <title>DEV Community: Yappaholic The Junior</title>
      <link>https://dev.to/yappaholic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yappaholic"/>
    <language>en</language>
    <item>
      <title>The wicked path of independent Linux Distro</title>
      <dc:creator>Yappaholic The Junior</dc:creator>
      <pubDate>Thu, 07 Nov 2024 15:49:01 +0000</pubDate>
      <link>https://dev.to/yappaholic/the-wicked-path-of-independent-linux-distro-5fbl</link>
      <guid>https://dev.to/yappaholic/the-wicked-path-of-independent-linux-distro-5fbl</guid>
      <description>&lt;h2&gt;
  
  
  Preface
&lt;/h2&gt;

&lt;p&gt;Some time ago I wrote a post about &lt;a href="https://dev.to/yappaholic/helix-editor-a-matter-of-questionable-existence-5cho"&gt;Helix editor&lt;/a&gt; and questioned it existence. Since then I learned a lot(at least what &lt;em&gt;Kakoune&lt;/em&gt; is) and started to grasp more about linux and why it is awesome (&lt;strong&gt;i.e. started distrohopping&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;Anyone with enough Linux experience will tell you that to be a real Linux user You need to pick &lt;strong&gt;the MOST niche distro possible&lt;/strong&gt;, and the less actual features you get from it the better. That's why I, as a real embodiment of &lt;del&gt;SoyDev&lt;/del&gt; GigaChad, decided to move to NixOS and Gentoo, last being more preferred.&lt;/p&gt;

&lt;p&gt;But at some point I encouraged myself to look up the source code for Portage, the Gentoo package manager. And lo and behold, almost everything is Python code. The view of it filled me with the rage of thousand suns and from that point all I thought about is making me own distro. So ladies and gentelmen, I am showing you&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;center&gt; The Cave Linux &lt;/center&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtin87ertd8pahvpflnc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtin87ertd8pahvpflnc.png" alt="Cave Linux logo" width="403" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Imagine that the logo is finished... just as the other part of distro ;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, lets get it clear about what is what. The &lt;em&gt;Cave Linux&lt;/em&gt; is going to be an independable meta Linux distribution powered by &lt;code&gt;Zig&lt;/code&gt; with fast package manager called Grit. &lt;code&gt;Grit&lt;/code&gt; is supposed to be blazingly fast, with minimal to zero headache on configuring and with nice CLI experience.&lt;/p&gt;

&lt;p&gt;The big benefit of having &lt;code&gt;Zig&lt;/code&gt; is that it ships with LLVM &lt;code&gt;C&lt;/code&gt; and &lt;code&gt;C++&lt;/code&gt; compiler, which means that &lt;br&gt;
&lt;strong&gt;a&lt;/strong&gt;: No need to compile compiler, which takes eternity&lt;br&gt;
&lt;strong&gt;b&lt;/strong&gt;: Almost everything can be built using Zig only and not relying on GCC/Clang&lt;/p&gt;

&lt;p&gt;Right now the path is hard, because to build the package manager from scratch one should use a lot of time and patience(and make a scripting language at some point).&lt;/p&gt;

&lt;h2&gt;
  
  
  But why not use Python/Nix/Bash/XYZ language?
&lt;/h2&gt;

&lt;p&gt;The reasons for that are simple, really:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I don't want to build another nix wrapper, because anyone can get fresh Linux From Scratch build, slap nix on top and voila, distro is ready!&lt;/li&gt;
&lt;li&gt;No python because I think there should be less need for system resources from the package manager itself, especially on slower hardware.&lt;/li&gt;
&lt;li&gt;As one great 10x developer said "If you get to the point of writing for loops in Bash, you are doing something wrong with your life".&lt;/li&gt;
&lt;li&gt;And not others because most of them are stinky for me (especially C/C++ or God forbid Rust).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  But why make another distro?
&lt;/h2&gt;

&lt;p&gt;Well, why not? At the end of the day, the amount of raw experience you get from making something like this is &lt;strong&gt;IMMENSE&lt;/strong&gt;(making your own &lt;code&gt;config language&lt;/code&gt;, &lt;code&gt;parser&lt;/code&gt;, &lt;code&gt;transpiler&lt;/code&gt;, &lt;code&gt;database&lt;/code&gt;, &lt;code&gt;installer&lt;/code&gt;, &lt;code&gt;package manager&lt;/code&gt; and shipping it all within one tarball). Also because&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;F##K IT WE BALL&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  So what are the future goals?
&lt;/h2&gt;

&lt;p&gt;Right now the most important things for this project are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Try and build whole Linux with just Zig.&lt;/li&gt;
&lt;li&gt;Write my own scripting language which will then build the package.&lt;/li&gt;
&lt;li&gt;Make a site for the documentation and quirks of the distro(probably going to use functional language for that).&lt;/li&gt;
&lt;li&gt;Pack everything in a tarball an let others try it out.&lt;/li&gt;
&lt;li&gt;??? PROFIT!!!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, if you got somewhat interested or if your body is trembling in front of my personal Frankestein, I suggest you check my repository, when I try to make &lt;a href="https://github.com/Yappaholic/grit-zig" rel="noopener noreferrer"&gt;Grit&lt;/a&gt; a real thing to use. And thank you for your time reading this!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>zig</category>
      <category>diy</category>
      <category>lfs</category>
    </item>
    <item>
      <title>Helix Editor: a matter of questionable existence</title>
      <dc:creator>Yappaholic The Junior</dc:creator>
      <pubDate>Sun, 09 Jun 2024 19:11:24 +0000</pubDate>
      <link>https://dev.to/yappaholic/helix-editor-a-matter-of-questionable-existence-5cho</link>
      <guid>https://dev.to/yappaholic/helix-editor-a-matter-of-questionable-existence-5cho</guid>
      <description>&lt;p&gt;As a learning junior dev, I went from the depiction of soyest dev imaginable(python my beloved, windows and VS Code) to the true struggle and learning enjoyer(Neovim btw, Arch btw and Typescript(bearable)). So recently I landed my vim-motions on the helix editor to try and figure out: was it really necessary for helix to exist or should you try it out as a vimmer?&lt;/p&gt;

&lt;h2&gt;
  
  
  Prelude
&lt;/h2&gt;

&lt;p&gt;From the start we should talk about the origins of the helix editor. Just as JavaScript came from Java, Helix came from Kakoune. What is Kakoune you ask? I have no idea, neither should you. All you should know is that Helix has a lot of similarities of vim and vim-motions but then it takes a rather strange approach to solve same problems. Let's take a look.&lt;/p&gt;

&lt;h2&gt;
  
  
  Selection over action
&lt;/h2&gt;

&lt;p&gt;You heard it right. No more double y to copy line or double d(eez nuts) to delete line, Helix thinks otherwise. First you gotta select a line and then manipulate it. You think "Okay, just let me use visual block with &lt;code&gt;V&lt;/code&gt;" and you wrong again. No more visual blocks, it's a matter of the past, now you need to use &lt;code&gt;x&lt;/code&gt; to select line and &lt;code&gt;x&lt;/code&gt; again to move one line down.&lt;/p&gt;

&lt;p&gt;Okay, maybe I can start selecting at the start of the line and then use &lt;code&gt;0&lt;/code&gt; to go to the end of the line, right? Right?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fziob9urcw61krlrg7rzm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fziob9urcw61krlrg7rzm.jpg" alt="Image description" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sike! Helix thinks you are lazy to learn vim bindings, so now movement is bound to "go to"(or &lt;code&gt;g&lt;/code&gt;) movement. To go to the end of the file, use &lt;code&gt;ge&lt;/code&gt; and to select a line and go up you need to use &lt;code&gt;vglk&lt;/code&gt;, when in vim you can just do &lt;code&gt;Vk&lt;/code&gt;. Do you feel post-modernity yet? If not, then we go deeper.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plugin system
&lt;/h2&gt;

&lt;p&gt;Just as PlayStation 5 has no games, Helix editor has no plugin system yet. They are going to implement it using Lisp language and connecting it to Rust with some Steel plugin(did I mention it is written in Rust?) which is old and not post-modern at all. Forget about git with fugitive, forget about managing files with oil(also at the moment there is no file traversal in Helix except &lt;code&gt;:open&lt;/code&gt; command and fuzzy finder), and the most important, no more file harpooning.&lt;/p&gt;

&lt;p&gt;Instead, Helix comes with a lot of built-in stuff like fuzzy finder, tree-sitter, autocompletion, key bindings helper, diagnostics and lsp support when you install a correct language server. It is enough to make editor work with code but not enough to make it a complete IDE-like editor, so to get the most out of it modding community should do a lot of heavy lifting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Too much FZF
&lt;/h2&gt;

&lt;p&gt;Working with Helix feels kind of okay. You got most of the stuff done, autocompletion is snappy, files open a bit faster, but then you notice: there is too much fuzzy finder! Literally, it makes a lot of stuff. Diagnostics? FZF. File picker? FZF. Tree-sitter objects? FZF. Special names in the code? FZF. Hotel? FZF. Brazil? Mentioned.&lt;/p&gt;

&lt;p&gt;Don't get me wrong, I think that fuzzy finder is awesome, but it has it's own caveats and is some cases it's better to use something else. For example, you can't really manipulate folders and files with FZF and when(as I understand) using FZF it goes through every folder no matter what you want to search and shows everything. That's when you want to search for something and get a screamer with all &lt;code&gt;node_modules&lt;/code&gt; files. Yuck!&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;

&lt;p&gt;Configs for Helix are written in &lt;code&gt;.toml&lt;/code&gt; format, which is still better than some other options available(talking about you, ĴSON). Some terminal emulators and bun runtime also use toml to configure settings so you can get comfortable, and documentation covers enough settings to make experience personal and comfortable(no plugins tho).&lt;/p&gt;

&lt;h2&gt;
  
  
  "Post-modern" editor
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyldd0jmronxkydb03ww8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyldd0jmronxkydb03ww8.jpg" alt="Image description" width="500" height="665"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the end, Helix Editor is a sort of chimera from scrapped vim-motions, LSP, Tree-sitter, FZF and some other popular plugins from vim.&lt;/p&gt;

&lt;p&gt;The main reason I don't like Helix isn't because there are no plugins, even though the version number is almost close to the one in emacs, but because of the motions. Vim-motions are designed with idea of mnemonics and being fast. When vim's &lt;code&gt;g&lt;/code&gt; is responsible for many movements it makes sense, because it is short to "go". So &lt;code&gt;G&lt;/code&gt; is going to the end, &lt;code&gt;gg&lt;/code&gt; is going to the start, &lt;code&gt;gf&lt;/code&gt; is to go to the closest matching character(the only &lt;code&gt;gf&lt;/code&gt; you'll have), &lt;code&gt;gd&lt;/code&gt; is to go to the declaration and so on. In Helix it is scattered everywhere and g is more like a leader key for other keys, so now you gotta make more hand movement and keystrokes. Just why? This is why sometimes it is better to stick with old ways, even when they are old. And also text wrapping is awful, just going to leave it there, think for yourself at least once.&lt;/p&gt;

&lt;p&gt;So that's my thoughts about Helix Editor. Stay tuned to see how I test warp terminal to save you a couple of keystrokes, like a GigaChad.&lt;/p&gt;

</description>
      <category>vim</category>
      <category>editors</category>
      <category>helix</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
