I didn’t even know Zellij had such extensive plugin system.
I’m going to explore more of those in coming days.
Let me start with Zellij Forgot
While the main (original?) purpose was (I assume) to remember various Zellij
Keybindings, it can be extended to remember anything.
While default/out of the box config will load the existing keybindings, it is
a bit weird. It shows things like Some(Down, None)
which seems more of Rust
internal code and may not be directly useful to the user.
Instead, (as the README suggested) I added my own “pairs” (This is also given in
the README, I just copy/pasted it)
By default, this adds to the existing list.
Not what I wanted.
Luckily, adding "LOAD_ZELLIJ_BINDINGS" "false"
to the config will disable
automatic keybinding loading.
If you can afford, please pay!
On the other hand, paying to read articles is expensive for you, here is an option (among many others, I’m sure) for you
Install extension like Click to remove element from the Chrome Web Store. It works with others Chromium based browsers as well, like Edge, Vivaldi, Arc and many more 1
When you see a popup blocking the article, you can use extension like Click to remove element and remove the popup 😄
Continue Reading »
Yesterday, I came across this new script released by Basecamp.
The one-line pitch is:
Turn a fresh Ubuntu installation into a fully-configured, beautiful, and
modern web development system by running a single command.
This was started by DHH, but now has a lot of contributors.
Since I’m not on Ubuntu, I can’t directly use it. But I’m tempted to set up
Ubuntu on a spare (?) machine just to try this out.
Since this is how DHH wanted his machine to be setup, it installs apps like Zoom
and Signal etc among others.
But as the intro post says :
the heart of the pre-configuration lies in the terminal
Since I also spend a lot of time in the terminal on macOS, it was something I
could try. Luckily, most of the tools are available for macOS too.
I really liked tokyo-night
everywhere.
Here is what I have done so far.
- Switched to Alacritty from Wezterm
- Configured Alacritty and Zellij based on omakub config
- Installed flameshot. Earlier, I used to use
Zappy for annotating screenshots (To be shared with
bug report or a fix.)
- Installed
eza
replacement for ls
I had tried exa
- before eza
was
forked out of it since exa
was unmaintained, and for some reason, forgot to
install it when I reinstalled macOS recently.
- Made same font as omakub my default for Alacritty
Things I did not install:
mise
: I already use asdf
, so I don’t see much use switching. mise also
has task runner functionality, but I use just
in place of make
, so I’m good.
Neovim : Happy with Emacs and Helix. Thank you very much. Update
- Lazygit : I tried to use it. But I couldn’t learnt the keybindings and felt
like I can’t use it. For now, I’m happy with
magit
when in Emacs, and just
plain ol’ terminal when writing in Helix
- lazydocker seems interesting. I might try it when I need to interact with
docker a lot
- Typora: Since I use Helix for markdown (like these posts), I skipped that
section of the demo video. omakub also installs VScode (which I already have)
which can very easily be used for markdown, why an editor just for markdown ? It
might make sense for DHH - who I assume writes lot more text than me.
Overall, this exploration was much fun.
Emacs 1 has this command fill-paragraph (Usually M-q) which will auto format long uneven lines to make them look even by adding a hard wrap.
But I use helix for writing these blog entries. That is how I discovered reflow command in Helix.
It is simple really
Select the blocks of text you want to format (by typing x and repeating for as many line as you have). Then :reflow. That’s it!
Continue Reading »
After going through omakub 1 and its source, I wanted to recreate it on macOS as much as possible.
The first thing was to use Alacritty.
I had tried it in the past, but moved to Wezterm.
The reason I stopped was because there was no support for panes or tabs (which is by design) But now that I’m anyway using Zellij for that, I decided to give Alacritty another chance.
Continue Reading »
Default command for creating a new project is :
django-admin startproject my_new_project
Django will then create a folder called my_new_project (if it does not exist)
But if folder my_new_project exists (even if empty) we get error like :
CommandError: '/path/to/my_new_project' already exists
The way around is to specify a folder name after the project name like
django-admin startproject my_new_project existing_folder
See the documentation for details.
It is (almost) drop-in replacement for pip. We just need to invoke it as uv pip instead of pip
How to install ? pipx install uv : This makes it available everywhere. Other alternatives are curl (recommended) and brew (on macOS) It is superfast I tried installing Django
$ uv pip install Django Resolved 3 packages in 138ms Downloaded 3 packages in 2.53s Installed 3 packages in 228ms + asgiref==3.8.1 + django==5.
Continue Reading »
In rust, str is a primitive type, but many non-primitive types are also in scope by default.
e.g. We do not need to add use statement to use Vec - which is NOT a primitive type.
It comes from std::vec
So Vec::new() is really std::vec::Vec::new()
Vec::new() works because Rust inserts this at the beginning of every module:
use std::prelude::v1::*; This makes Vec (and String, Option and Result) available by default.
Continue Reading »
OK, title is a bit of clickbait. It saved me some inconvinence 😉
Yesterday, Wezterm crashed.
At first, I was worried that all my “work” is lost (few blog posts were in-progress and open in helix)
But I had forgotten that I always start zellij these days.
So all my “work” was indeed there.
All I had to do was zellij ls followed by zellij a my_session1 (and my_session2 and so on)
Continue Reading »
On the knowledge project podcast, Shane parrish interviewed Kevin Kelly
The link above has good high level overview with timestamps. Definitely check it out.
One thing that is not covered in the timestamps (hence I can’t link to the exact conversation) is about Importance of making things 1
Kevin says something to the effect of, don’t stop making things (that you care about) just because they are not the greatest or the best.
Continue Reading »