Database Normalization: Scratching the Database Surface
· β˜• 7 min read
Database normalization is the process of structuring a database, in accordance with a series of normal forms in order to reduce data redundancy and improve integrity. In other words, database normalization is basically breaking a table into two to prevent repetitive columns aka data redundancy.

Best Logging Library for Golang
· β˜• 3 min read
I recently conducted a poll in Go community regarding which logging library they use in their personal or professional project. The results were interesting. In this post I have jotted down the most favorite logging libraries and here is my opinion about them.

Release Dangling Elastic IPs using Lambda and Go SDK
· β˜• 12 min read
There is 1 good thing about EIP and 1 bad thing. The good thing is EIP is free to use. You don't need to pay anything for the static IP you are using. How cool! The bad thing is, when EIP is not attached to an instance, it cost you money. In today's post we are going to do a hands-on on how to kill a dangling EIP or in other words, deallocate an unassigned Elastic IP.

Implementing Linked List in Java: Part 1
· β˜• 8 min read
In the last post, we have already seen that we can classify entire data structure into linear and non-linear data structure. Today I will be implementing them in Python. So brace yourself.

This is how you add Ad Blocker to OpenVPN enabled VPN
· β˜• 8 min read
We have previously seen how you can spin up your own VPN. Among many benefits, one of the benefit is the geographical anonimity. Today we are going to discuss and setup yet another benefit. We are going to tweak our VPN server setup a little bit to enable ad-blocker out of the box. Meaning that you won't have to install ad-blocker on your browser. It will be enabled connection wide.

How to Integrate Swagger UI in Go Backend - Gin Edition
· β˜• 11 min read
Unlike FastAPI, Gin does not have OpenAPI integration built in. With FastAPI when you add a route, documentation is already generated. With Gin, this is not the case. But recently I integrated Swagger UI in one of my Go backends and I wanted to document that process.

Manage Docker Environment on VPS with your Local Portainer
· β˜• 2 min read
In last post we learned to install and configure Portainer to maintain your local Docker environment. In this post I'm going to extend on last post and show how can you manage your VPS docker environment from your local Portainer installation.

Install and Configure Portainer on your Local Machine
· β˜• 3 min read
This is a quick post where I demonstrate how to install Portainer on Ubuntu. And then use the same instance to Portainer to manage/administer Docker instance on your VPS. Regardless this tutorial is demonstrated on Ubuntu, you can run Portainer on whatever Docker host you are using including Windows.

gRPC for Absolute Beginners, in Go
· β˜• 13 min read
Internet has evolved in last 2 decades a lot. HTTP/1.1 was not enough so we have HTTP2 now. The specification we used to transfer data between client and the server has also evolved. From XML, to JSON, and now we have Protocol Buffer, which is a binary spec. Let's dive deeper.

TDD Approach to Create an Authentication System With FastAPI Part 5
· β˜• 9 min read
We have been using FastAPI along with the Test-Driven Development process to come up with an authentication system. Till now we can register to own a tiny application using a username and password. We are also able to generate a JWT token to be classified as a logged-in user. But there is no point in logging in until the logged-in user can do something privileged. In this iteration of the series, we'd see how to access a protected endpoint using FastAPI and JWT.

TDD Approach to Create an Authentication System With FastAPI Part 4
· β˜• 11 min read
In the last couple of posts in TDD Auth with FastAPI series, we've been sustainably moved towards a web service that can let users register with the service. Now what? We have already done the easy part. The next part is to look at the authorization. This involves letting the user log in. And only give access to what they are authorized for. Let us look at the login part first.

Building a Book Store API in Golang With Gin
· β˜• 9 min read
Go community believes that we need no framework to develop web services. And I totally agree with that. When you work without using any framework, you actually learn the ins and outs of development. But once you learn how things work, you must reside in a community and don't reinvent the wheel.

__init__ vs __new__ and When to Use Them
· β˜• 5 min read
I recently got asked to me what did __init__ dunder method did in Python. And I was like, "it is used to initlize variables inside a class". And just after that the followup question was, "then what is __new__ used for. And I was completely blank.