When Firefox does not open

Today, after applying latest update of macOS Monterey, I restarted my laptop. But Firefox won’t start 😢 No error, no nothing, no window either. At first, I uninstalled existing version, downloaded a fresh one from internet (using Vivaldi). I assumed that maybe my OS update broke something, and reinstalling might help. It didn’t. Then, I started Firefox from the terminal hoping to see error, if any 1. Didn’t help. Next, I decided to remove the cache.

Continue Reading »

How to pretty-print in Rust

Today, I accidentally found out that instead of using {:?} to debug print, if one just adds an extra # like {:#?} the variable is pretty printed. This makes sense for struct rather than simple data types like numbers or strings. The interesting part (for me at least) is how I “discovered” it 😄 When I was printing a struct (for debugging 🙈) VS Code (I think rust analyzer plugin) showed a popup how the struct does not implement Display 1

Continue Reading »

How to specify the size for the embeded image in Obsidian

TL;DR: When inserting a link (especially of the image) one can add pipe followed by size. This size is used for displaying embedded image inside the note. For example, I have a markdown and excalidraw mixed note named Dashboard It references itself (for the excalidraw image on the back of the note) like ![[Dashboard]] 1 This results into an image that just shows small preview that is not useful, especially if image is wide (and/or tall).

Continue Reading »

→ macOS : Whichspace

I have been using macOS for almost 9 years, and never used the workspaces feature (Not sure when it was introduced)

But after looking at Omakub I started using this feature.

Essentially, I divided the apps as follows. (Or at least that is what I wanted 😄) Each app (window) on its own workspace.

But somehow, some of the browser windows (I think new ones, after I moved existing windows to different workspace) moved to different ones.

Suddenly, it started feeling “jumpy”

(I think) I eventually figured out how to ensure that all the firefox windows remain in the same workspace 1

While looking at all these, I came across Amethyst (Still exploring, maybe upcoming post) and also WhichSpace (finally app mentioned in the title of this post 😆)

This is really tiny utility. It shows the desktop number (like 1, 2, 3, 4) that is all.

But it is useful (at least I think so)


  1. In the dock, right click on Firefox icon -> Options -> Assign to -> This Desktop. The default is None hence the seemingly erratic behaviour. ↩︎

Creating Youtube Banner

Today, I was trying to create a banner for my (upcoming) YouTube channel. I used Canva to get started. It has a lot of templates to get started. This can be a rabbit hole 😄 But I finalized the one I liked. After customizing the template to my liking, I was ready to upload it to youtube. But .. Turns out, depending on the device where are watching YouTube, different parts of the banner are visible.

Continue Reading »

direnv with python

What is direnv direnv is a tool that allows you to change your environment based on the configuration in that folder. e.g. You can set different environment variables for different folders. The reason I revisited direnv is because for python project, we need to switch to different virtual environment each time we change a project. Wouldn’t it be nice if correct virtual environment was activated when you change to that directory

Continue Reading »

Helix: Vertical Selection and Edit

One of the workflows I used in vi/m over last 2 decades is : vertical selection and edit So much so that it is part of my muscle memory and I needed to learn the equivalent in helix. After some searching, I found it. Here are the steps: Go to the column you want to select. Press v to enter select mode. Select the column and to go down and up in the column selection use Shift-C or Alt-Shift-C You can repeat the Shift-c command using the numeric operator if needed, like 10-Shift-C to select the column 10 rows vertically.

Continue Reading »

Omakub : Lazyvim

As I wrote earlier, I skipped over neovim initially, but then got curious. I installed Neovim and configured it to use Lazyvim. I was blown away by how nice it is. My last serious affair with neovim was two years ago. 1 Lot has changed since then. Lazyvim wasn’t even born when I stopped using neovim 2 It is quite polished.3 The hotekys are mnemonic and intuitive (coming from doom emacs, at least)

Continue Reading »

Omakub : Pinta

While Omakub was mainly intended for developers (and thus has focus on terminal based programs like alacritty, zellij and neovim), it does come with few GUI programs. I think this is mainly because DHH was trying to switch to Linux as his primary machine, and requires some non-terminal tools. Choice of Pinta and Xournal app were interesting, so I installed both of them. I assumed Pinta to be MS Paint replacement.

Continue Reading »

→ Zellij Plugins : zellij-forgot

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. 1

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.


  1. The README has example of buy eggs 😄. Personally, I don’t think it is very good example. If you remember to look it up, you’ll also remember to buy eggs anyway. IMO, this is meant for things that one does not use frequently, and needs to “look up” ↩︎