Home ¦ Posts ¦ Books ¦ Articles ¦ Talks ¦ Notes


Hello, My name is Amit - I am interested in programming, software tools, systems and infrastructure. A lot of what I explore in software makes it to my blog posts, articles, books, talks and GitHub repositories. If you would like to get an email everytime I write something new, please subscribe to my newsletter. You can contact me via email, on Twitter and on LinkedIn.

Blog posts

My post recent posts are below. So far, I have written about C, Fedora, Golang, Infrastructure, Python and various others.

Fedora Scientific 28 is here!

Fedora 28 is out and I am happy to share that after a few releases of no Fedora Scientific, we are back. Thanks to all your emails and enquiring about whether Fedora Scientific is dead.

Fedora Scientific 28 Download

Go Download it now!

The Fedora Scientific Guide has been updated a bit as well …

How does ping roughly work over IPv4 on Linux?


The ping program is one of the most common programs which is used to check the "aliveness" of a host and a typical execution looks as follows:

$ ping -c 1 -4

PING ( 56(84) bytes of data …

Notes on using Cloudflare DNS over HTTPS

I recently learned about Cloudflare's DNS service. One of the more interesting things that caught my attention there was DNS over HTTPS. That is, we can do this:

22:27 $ http 'https://cloudflare-dns.com/dns-query?ct=application/dns-json&name=echorand.
HTTP/1.1 200 OK …

Fedora Scientific 28 Beta

Fedora 28 beta was announced recently and I am happy to say Fedora Scientific is back.

One note though, the following applications/libraries are not part of the release:

  • networkx
  • scilab
  • sagemath
  • rkward

You can install them on your installation using:

$ sudo dnf install python*-networkx scilab sagemath rkward

The …

Setting up AWS EC2 Assume Role with Terraform

In this post, we will see how we can implement the AWS assume role functionality which allows an IAM role to be able to obtain temporary credentials to access a resource otherwise only accessible by another IAM role. We will implement the infrastructure changes using Terraform and see how to …

Automatic building and publishing DEB packages for Golang applications

In my earlier post, Quick and dirty debian packages for your Golang application I shared a recipe building DEB packages for Golang applications. We are going to see the following things in this post building upon our recipe in that post:

  • Building the DEB packages in Travis CI
  • Publishing the …

Detecting RLO character in Python

At work, I learned about how Right-to-Left Override was being used to make actually malicious files to look harmless. For example, a .exe file was being made to appear as .doc files. We didn't want to allow uploading such files. This meant that I nedded to detect the presence of …

Sorted Sets in Redis from CLI, Python and Golang

In this post, we will see a demo of sorted sets in redis. I just learned about them and I think they are really cool! This post shows how we can play with sorted sets first via the redis-cli, then from Python and Golang.

 .───────────────.          │            │           .─────────────.
(    Redis CLI    )   ───▶  │   Redis    │  ◀─────  (    Golang     )
 `───────────────'          │            │           `─────────────'
                          (    Python     )

We …

Python: Using specific git commits of third party packages

After a fair number of furious impatient attempts to try and use specific git commits of third party packages in my Python software, I finally have been able to make it work. I went back to the drawing board - basically reading setup-vs-requirement.


This is what I did:

  • If you …

Why RPC in Microservices instead of HTTP?

The Freelancer.com REST API is powered by a number of backend services. The API itself is powered by a Python HTTP server which communicates with the other services (Python, Golang and PHP) via RPC calls implemented using Apache Thrift. It is only during the past 2.5 years that …

© Amit Saha. Built using Pelican. Customised theme based on the one by Giulio Fidente on github.