Vim is a amazing text editor. The way the keybindings flow together is really something beutiful. I am going to assume most people who are reading this know what vim is so I am going to explain why emacs is a better vim then vim itself.
One common idea is that vim is fundementally better then vi. People don’t really take the time to understand why its really better. The same thing happens with neovim to vim but lets start with why vim is a better vi.
I tried guixsd about a half a year ago and didn’t like it. The reason being it was super slow. A friend told me that guix has gotten faster and from my little memory of it, it has by a decent amount. The laptop I am running it on is a 3gb 2 core thinkpad from 2005. Which was the same one I originally tried it on. It was a little annoying for me because I originally had to build my kernel from source as I don’t have a free wifi card.
Recently I have switched to guixsd and found out that it does not have ripgrep, exa or bat. To me the only one I really care about is ripgrep so naturally I wanted to learn how to package it. Well… there is alot of bolderplate code involved in that because I need to package every single crate ripgrep uses. Looking into the source code for guix they actually do this.
I recently spent a week trying out Fedora Silverblue so keep in mind I am not running it anymore and actually installed guixsd (probably a article about that switch soon). Fedora silverblue is very experimental and a interesting concept. It revolves around the idea that there is a immutable base system which can’t be changed easily. This is the biggest aspect that is close to nixos and guixsd however the way you deal with this immuatable base is very different.
Someone asked for for a plain text version trying to meme me so I am making plain text and html exports available. I can do this because the blog is all a single org mode file which I can just export with this bash command provided things are installed and because git hooks are amazing. You also need a package called htmlize for emacs on melpa which was annoying to get working.
Recently I actually found out a interesting way on how to deal with selection in emacs. A while ago when I was trying to force myself to use pure emacs keybindings I had trouble with finding a solution I liked which worked like dd in vim/evil. I then proceeded to install a package which made something I thought should be default in emacs which was C-w and M-w default to a single line if nothing was selected.
Helm to me is a core part of functionality and I couldn’t imagine using emacs without it. There are 3 popular fuzzy completion frameworks for commands in emacs. ido, ivy and helm. ido is builtin and the least intrusive. Basically vanilla ido There are hacks to get around this inline like fuzzy matching but at that point just use ivy. It also has somewhat weird keybindings with C-s and C-r to go back and forth between results.
I recently found a really nice function which allows you to expand macros temporally. Basically it allows you to step into the macro to see what it expands too. Doom uses alot of macros so this is really interesting to me. map! actually expands to general which tbh is expected. use-package! and package! package! is alot more interesting and does a whole bunch of listy things. I need to write something that abuses lisp macros because its really nice to work with.
Git has a nutty amount of features so one feature I was completely unaware of but really found useful is Git Hooks. They are simply executable which are executed at certain points in the git workflow. Git hooks can either be client side or server side and both are interesting in what they can do. The location of said git hooks are in .git/hooks and come with some examples.
As of right now I setup a git hook for my server to automatically deploy this blog.
I made a little “powerpoint” using org mode (exported reveal js) on github. The information is available on github. I think I am going to start making more things like this but instead of posting it on github and presenting it just make it on my blog. The reason I made it was to present to the comp sci club at my university so maybe I will keep that repo for presenting and have this blog to just have things I have done in its raw form.