Photo by Martin W. Kirst on Unsplash

The intent of this post is to introduce a workflow for developing and testing software which is tightly coupled with a containerized environment. I like to call this workflow Container Driven Development . The core idea behind Container Driven Development is to write, execute and test every line of code inside a containerized environment from the very beginning of the application development cycle.

Typically, we first write and test our applications and then work on containerizing them right before shipping or deployment. For most of us, the first time our application actually runs in a container is in production. …


Photo by Mirza Babic on Unsplash

I recently got interested in analyzing and tracking my monthly spending patterns. There are tools out there such as Mint which help you do just that. However I was more interested in having access to historical raw credit card transaction data for analysis. Furthermore, I found that services like Mint did not do a very good job of categorizing transactions accurately. For example, If I would buy something on Amazon or Google, the charge would end up being bucketed into a general Shopping category. …


“black sperm whale” by Sho Hatakeyama on Unsplash

Since the advent of Docker, I rarely find my self directly installing development software on my local machine. Be it database servers (i.e Postgres), caching systems (i.e Redis, Memcache) or messaging systems (i.e Kafka) — I almost always try to find or build an appropriate docker image to use during development.

Installing software is hard. And it has nothing to do with your expertise as a developer. We have all seen our fair share of version clashes, esoteric build failure messages and missing dependency errors each time we embarked upon the task of installing a new software to use. We…


“A toddler standing at the bottom of a tall staircase” by Mikito Tateisi on Unsplash

In this post, we are going to take a step by step look at how to test , deploy and interact with a simple Ethereum smart contract using the Go programming language.

There are a number of tutorials on the web detailing with how to deploy and interact with Ethereum smart contracts. However, these tutorials are either exclusively done in Javascript or some combination of Javascript and Go.

As a budding Gopher and Ethereum enthusiast, I wanted to build, test, deploy and interact with smart contracts on Ethereum using Go. However, I was not able to find a simple step…


Photo by yyouhz

If you have read my previous posts, you know I like to tinker with CPython internals to try and understand how python really works. Reading the CPython source code helps but to really grasp how python (or any piece of code) works, I believe that one needs to step through code execution and understand the control flow. In this post, I will outline the process I typically follow to dig deeper into aspects of the python programming language I am curious about. Unless otherwise stated, the examples and code samples in this post assume a unix like operating system.

To…


Photo By Fancycrave

PEP 498 introduced a new string formatting mechanism known as Literal String Interpolation or more commonly as F-strings (because of the leading f character preceding the string literal). F-strings provide a concise and convenient way to embed python expressions inside string literals for formatting:

We can execute functions inside f-strings:

F-strings are fast! Much faster than %-formatting and str.format() — the two most commonly used string formatting mechanisms:

Why are f-strings so fast and how do they actually work? PEP 498 provides a clue:

F-strings provide a way to embed expressions inside string literals, using a minimal…


Photo by Kaique Rocha

Generator Functions are one of the coolest features of the Python programming language. There are numerous articles on the web describing the many benefits generator functions provide in terms of speed, scalability and memory efficiency of our python programs. However, there is not much material out there which sheds light on how generator functions actually work behind the scenes. This article attempts to fill this void by shedding light on some of the key features of the python programming language which make generator functions possible.

The fundamental feature which gives generator functions their superpowers is the ability that a generator…


Photo By Felix Broennimann

If you have been doing any kind of web development, the name Nginx should immediately resonate with you. But what you may not know is that Nginx is built on top of an extensible and customizable module chain. It is these modules which actually do most of the heavy lifting when it comes to serving requests, sending files or communicating with Redis , Memcache or FastCGI servers. One such (perhaps not so well known but extremely powerful) module is Nchan . Nchan makes writing realtime web based pub/sub applications a breeze. In this article, we will build a simple systems…


Photo By George Becker

Have you ever wondered how the CPython interpreter handles attribute access on a class or an instance of a class? Or how the course of normal attribute lookup changes when you override the attribute access dunder methods __getattribute__ and __getattr__ ? What underlying C functions get called and in what order? Do the same C functions get invoked when you access an attribute on a class as opposed to an instance of a class? In this post we are going to take an in depth look at how attribute access works at the CPython level. We are going to follow…

Syed Komail Abbas

I am a Software Developer working in the financial sector. I love coding, cooking and powerlifting

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store