Organizing Shell Commands

Anyone who works in a field related to computer software, ends up running a bunch of CLI (command line interface) commands pretty often. The longer you stay in the field, the larger is your command set. With new systems being invented everyday, the complexity of commands being run is also increasing. Day by day, I am finding myself running more and more complex commands. That’s when I decided I need something to manage these commands for me. Shell history is great, but it is not portable and reliable. So, I have built pin, a portable commands organizer. Pin is available for use at In this post, I’ll go over some of the key design choices I made while building this tool.

A quick emacs+cscope hack for broken symlinks

I use cscope in emacs as my primary code browsing tool for Linux kernel development. However, I started to get annoyed by cscope errors for broken symlinks. What is happening is that during the Linux kernel build process, a few symlinks get created which are not needed once the kernel is built. I presume that the build tooling doesn’t clean up these symlinks after they are removed and that confuses the cscope program. This results in the following annoying messages when I try to lookup definition or text or anything:

Personal website with password protection

After numerous attempts at finding a cheap and easy solution to making a password protected static website, I finally have settled my mind on one! Before going over the solution let me go over the requirements that I had in my mind for the website:

Writing song chords in markdown

I often struggled to keep chords for songs I played in a handy place. For a couple of years I have been maintaining chords in a Google Doc. Given the forgetful person that I’m, storing all the chords in one place has come as a blessing. Having all the chords in one place has helped me to be more organized about my music. It has helped me collaborate better with other musicians.