This tool seems to be much more intuitive than curl and wget.

HTTPie—aitch-tee-tee-pie—is a command line HTTP client with an intuitive UI, JSON support, syntax highlighting, wget-like downloads, plugins, and more.


Tools to draw diagrams and flowcharts

Catalina osx 10.15 bashrc fix

After installing osx 10.15 my .bash_profile stopped working. When I open a new terminal it says:

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit

I tried changing to zsh and was fine. But since my .bashrc has code not compatible with zsh, I switched over back to bash. Here are the steps to make sure bash reads your .bashrc file.

1. Install brew.
2. brew install bash
3. Open Terminal -> Preferences -> Profiles -> click on your default one -> Shell -> check “Run command” and paste exec /usr/local/bin/bash –init-file $HOME/.bashrc
4. Close the Profiles window
5. Open a new terminal

If all goes well, you will see the terminal executes the command you pasted, and your .bashrc settings should be in the environment. Check using env | sort.


Picture-in-Picture API

This is still experimental and Chrome only. Click the following link, then click the button, you will then see the video component goes out to its own.


Software Engineering Promotions

Interesting read.

It’s a source of distraction for an engineer to worry about things like this. I wish managers could proactively mentor and guide (without pressure) so it’s clear to the engineers what the next step(s) would be. And it’s totally up to the engineers if they want to get to the next stage at their own timing.

Spaghetti Sort

Truly mind blowing. Sorting done in O(N) time.



I forgot most of awk after college. Now that I look at it again, it does help in many cases when I need to work with csv/tsv files. There is no need to write a simple python script to parse lines out and do some printing.

Sample log lines [28/Sep/2010:04:08:20] "GET /robots.txt HTTP/1.1" 200 0 "msnbot" [28/Sep/2010:04:20:11] "GET / HTTP/1.1" 304 - "Baiduspider"

Sample cmds

awk '{print $0}'
awk '{print $1}' logs.txt
awk '{print $1, $(NF-2) }' logs.txt
awk '{print NR ") " $1 " -> " $(NF-2)}' logs.txt
awk '{print $2}' logs.txt
awk '{print $2}' logs.txt | awk 'BEGIN{FS=":"}{print $1}'
awk '{print $2}' logs.txt | awk 'BEGIN{FS=":"}{print $1}' | sed 's/\[//'
awk '{if ($(NF-2) == "200") {print $0}}' logs.txt
awk '{a+=$(NF-2); print "Total so far:", a}' logs.txt
awk '{a+=$(NF-2)}END{print "Total:", a}' logs.txt

Note: awk is 1-based. $NF is number of fields. NR is row number. FS is field separator.