Better History Search

No, I’m not talking about Atuin. 1 I improved my search experience with just one tool - fzf As you might know, fzf is a general purpose fuzzy finder. 2 But adding just source <(fzf --zsh) at the end of ~/.zshrc (and/or running it in your existing session) improves your Ctrl+r experience. See the demo yourself. I must confess that I’m tempted multiple times. But I think their USP is history sync, which is not my use case right now.

Continue Reading »

How to use Google Keep for Quick Capture with Obsidian

Problem While I use 1 Obsidian to capture everything while I’m at the desktop, it gets tricky when I’m away from the Desktop. Especially during my morning walk, I listen to Audiobook, and want to capture either a quote or some of my own related thoughts. 2 Solution Today, I came across a YouTube Video 3 which addresses this issue. Zsolt goes on to explain how see sought suggestions on Twitter 4

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 »

fill-paragraph in Helix

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 »

→ Conventional Commits

Few days ago, I heard about this on some podcast (maybe changelog ? 🤷‍♂)

I have been using similar notation for my commits - even for this blog1 - but I did not know it is a specification.

The idea is that very first word of the commit message should indicate what sort of commit is it.

Most common ones are : fix, feat (To indicate bugfix and a feature)

Other useful ones are: docs, style, refactor, test

Then there is chore (catch all ? 😄)

I’ve used some of these at work as well.

As the website mentions, benefit of such style is that some tools can parse the git log to automatically generate the changelog.

Website also mentions, that

it’s not the end of the world if a commit lands that does not meet the Conventional Commits specification. It simply means that commit will be missed by tools that are based on the spec.


  1. Since the commits are just addition or updates to markdown files, most of the tags are not used here. I only use Add and occasional Update. I do believe it is in the spirit of conventional commits 😄 ↩︎

Logseq : Take 2

I wrote about logseq almost two years ago and then I think when I switched job, I stopped using logseq. When I updated macOS, I forgot to install it, and forgot about it overall (I started using denote - in Emacs for some time) Recently when I started using obsidian while trying l learn more about it, I came across logseq again. I tried it again (after 2 years) I spent time learning basics (again)

Continue Reading »

Obsidian.nvim plugin

After using vim keybindings inside Obsidian, I came across obsidian.nvim plugin that makes working with Obsidian from inside Neovim pleasurable. This is definitely better than vim keybindings in Obsidian 1 But I had not not used neovim in a long time. After I upgraded to Monterey, I had not installed neovim again. So getting it (as in neovim) was a bit of work. But I had my old config saved, so at least I didn’t have to start from the ground floor.

Continue Reading »

Obsidian has vim keybindings

Today I discovered that Obsidian supports vim style keybindings out of the box. But it knows that vim is not for everyone. So it checks whether you know what you are doing (when you enable the setting, which is OFF by default) by having you enter a command in a pop up 😄 TBH, one can easily find out that command and “cheat”. On the other hand, if you don’t know vim, and still want to turn on the setting (by cheating) - you deserve what you get 😄

Continue Reading »

Obsidian

Obsidian is not new to me. I come across it from time to time, but never paid much attention. That changed when I migrated my PKM site to use Obsidian-zola. Technically, it use Zola, and has nothing to do with Obsidian (for Publishing) The “source” is maintained in Obsidian, but it is just collection of markdown files, which can easily be maintained outside. But then I got Obsidian desktop installed. I used it for making minor edits to markdown files.

Continue Reading »

→ Bruno: Local-first Postman Alternative

I think I came across this tool via Hacker News 🤔. But may be not. Anyway, it does not matter.

Why it appealed to me ?

At work, we have a shared Postman workspace, which often breaks.

Because anyone and everyone can modify it (which is some times needed) But then people click the Save button, because it is easy to 😄

and now, it is broken for others.

OK, there is a concept of fork in Postman, but then everyone has their own fork.

It is same as git fork. One has to keep the fork up to date.

Here comes bruno.

First thing I liked about it is that we can import from Postman. So that one does not need to create entire collection from scratch.

Once imported, it becomes a script/text, which can be version controlled

Next thing is secrets.

I have not yet figured out where and how they are stored. But secrets is one of the reasons, I was attracted to bruno

With local first, developers are free to use their own passwords on their machines.

I was able to get APIs working from Postman to bruno without much friction.

I did have to create environments from scratch. Not sure why they were not exported by Postman Maybe because they contain secrets ? 🤔

But once I added all the variables to Local environment, I can just copy-and-modify to create other environments.

At work we have a LOT of environments (At least 10. Yeah, I know)

I’ll be exploring bruno’s capacities in coming days. Like Bruno CLI, tests etc.