The making of programmingexcuses.sh
16 Feb 2015I recently discovered programmingexcuses.com which is a funny website displaying random excuses that we often use when confronted with a bug we didn't foresee.
I though it was a very clever idea and that it would also be cool to have it on the command line. I quickly googled it but found no result (except for this API).
So I decided to fill in this void.
First, I needed the list of quotes. I could get the page through curl
easily. Next, I needed a way to extract the content from the HTML. At first I tried it with grep
, sed
and awk
but my command line skills are still too weak and couldn't get it to work properly.
So I ran another google search to find a command line HTML parser. And I found pup which is to HTML what jq is to JSON. With pup
, I could easily get the text I needed from the page.
Now that I was able to get one excuse, I needed the full list. So I ran a loop of 100 calls to the website, to get a random sample of 100 quotes.
After running the list through sort
and uniq
, I ended up with a list of 77 quotes, which was enough.
Here the final script that got me my list :
#!/usr/bin/env zsh
for i in {00..100}; do
curl http://programmingexcuses.com/ \
| pup -p 'center a text{}' \
>> excuses.txt
done
cat excuses.txt | sort | uniq > sorted_excuses.txt
Now, I simply put the list in a simple bash script that does a shuf -n 1
on it to display a random one on each invocation.
Last step was to put that in a git repo, write a readme and push it to github.
Overall, it took me about 2 pomodoros (50mn). I love how powerful command line tools are.
Want to add something ? Feel free to get in touch on Twitter : @pixelastic