Containers are a collection of Operating System technologies that allows you to run a process. Containers are themselves a very old technology, but after the introduction of Docker and the software system they built to create, deploy, and ship containers, it has made containers to be adopted widely. We will look at atomic units needed to build a container without docker so that you can get past the definitions like “light weight VM”, “something to do with docker”, “poor man’s virtualization”.

So what technologies do we need to create our own containers?

Let’s first look at what an OS does…

Building applications in Monolithic architecture includes a client making request, server (with router, authorization middle-ware, some set of features, business logic) and a database. The whole App can be put into place using these. The build artifact is a single executable hosted on a single VM with consistent a technology stack.

In a Micro service, this set makes only a single feature for the app. They work independent of each other without any direct dependency on each other’s database. If any of the service is down, the app still works. The services are small, autonomous, and independently deploy-able.

Monolithic Vs Microservices Arcitecture

Monolithic can…


In a recent project, I needed an accordion component in my React application. I had a few options like using Material UI or some open source components this and this.

In my use case, the set of accordion options were dynamic, and they themselves carry the information whether they should be open or not.

I tried a few components, but after a day or two, I always had to go back and remove the component or add some additional behavior myself. …

What’s an Authentication?

Servers are basically stupid computer programs who cannot remember who and what made a request after serving it once. The communication between clients and servers over HTTP model is stateless in the sense that server cannot confirm the identity of client (user-agent) for each request without some sort of Authentication. Also, they have been over burdened with responsibilities like not showing your personal Twitter DM(s) to someone else, remembering stuff you added to your cart on Amazon, keeping your drafts on DEV articles safe from being copied by other people, preventing you from hacking your Ex’s Facebook. …

In 2006 Intel released the first dual-core CPU. Shortly after, a language (Go) that could natively provide features to benefit from multi-cores came into existence.


Concurrency is executing a set of instructions in any indefinite order and still being able to produce the same output of a program as if functions are executed sequentially.

Simultaneous execution of instructions is seen everywhere in modern-day programs. For example, we can see it in a web server serving multiple web requests or compiling code in our IDE while still being able to edit it. This term is often confused with Parallelism.

Let’s say…

Photo by John Doyle on Unsplash

While developing several full stack apps over the years, I realized some apps don’t need a full-fledged frontend application running. Most of these apps serve static content with dynamic values fitted here and there. For example, consider your social media feed, each post of a certain type looks same but it gets populated with data specific to that user. They use some sort of templating to achieve it.

What are templates?

Templates are essentially text files that are used to create dynamic content. For instance, the following JavaScript function takes “name” as an argument and produces different strings.

Deepak Ahuja

Let’s talk #Javascript and #golang. I am a Full Stack Software Developer. I spend my waking hours writing code and looking at clouds. Say Hi on your way back!

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