Personal blog on Software Engineering and System Intelligence

5/24/2022
11 min read

Understanding GeoJSON: A Complete Guide to Representing Geographic Data in JSON

In today’s data-driven world, location is everything — whether you’re building a mapping application, processing delivery routes, visualizing climate data, or t...

By Misbahul Munir

5/11/2022
3 min read

Interpreter Pattern: Defining a Grammar and Interpreting Language Rules

Some problems require you to evaluate or process sentences, expressions, or commands that follow a particular grammar or set of rules.

By Misbahul Munir

5/1/2022
3 min read

Visitor Pattern: Separating Operations from the Objects They Work On

Sometimes you want to **perform operations on objects of different types** without changing those object classes.

By Misbahul Munir

4/22/2022
4 min read

Template Method Pattern: Defining the Steps, Letting Subclasses Fill in the Details

Sometimes you have an **algorithm with a fixed structure**, but certain steps of the process need to be defined or customized by subclasses.

By Misbahul Munir

4/13/2022
3 min read

Iterator Pattern: Sequentially Accessing Elements Without Exposing the Structure

Sometimes you need to **traverse** a collection (like a list, tree, or database results) without exposing its underlying representation.

By Misbahul Munir

4/7/2022
3 min read

State Pattern: Changing Behavior When State Changes

In software, objects often behave differently depending on their current situation or **state**.

By Misbahul Munir

3/30/2022
3 min read

Memento Pattern: Saving and Restoring Object State

When building software, sometimes we need the ability to “travel back in time.” Whether it’s undoing the last user action, reverting a configuration change, or ...

By Misbahul Munir

3/25/2022
4 min read

Mediator Pattern: Centralizing Communication Between Components

In many backend systems, different modules or services need to talk to each other.

By Misbahul Munir

3/16/2022
4 min read

Chain of Responsibility Pattern: Passing the Request Along the Chain

Sometimes in backend systems, a request might have **multiple possible handlers**, and we don’t want the sender to know which one will actually process it.

By Misbahul Munir

3/11/2022
4 min read

Command Pattern: Turning Requests into Reusable Objects

In the world of backend systems, requests to perform actions are everywhere — from executing a database migration, to scheduling a background job, to triggering...

By Misbahul Munir

3/3/2022
5 min read

Observer Pattern: Keeping Everyone in the Loop

Welcome to the continuation of our **Design Pattern Series**. Having explored **Creational** and **Structural** patterns, we now dive into the **Behavioral** ca...

By Misbahul Munir

2/20/2022
3 min read

Flyweight Pattern: Saving Memory with Shared Objects

## What is the Flyweight Pattern?

By Misbahul Munir

2/16/2022
3 min read

Proxy Pattern: Controlling Access Like a Middleman

Sometimes, direct access to an object isn’t desirable or possible. You might want to add an **extra layer of control** — like validation, caching, lazy loading,...

By Misbahul Munir

2/12/2022
3 min read

Bridge Pattern: Decoupling Abstraction from Implementation

In complex systems, tight coupling between **abstractions and their implementations** can create rigidity. What if you want to vary both **what you do** and **h...

By Misbahul Munir

2/4/2022
3 min read

Composite Pattern: Treating Groups and Individuals the Same

In software design, complexity often arises not from individual parts but from how parts relate to each other — especially when **some parts contain other parts...

By Misbahul Munir

1/27/2022
3 min read

Facade Pattern: Simplifying Complex Systems

In the world of structural design patterns, the **Facade Pattern** stands out for its simplicity and power. It’s a pattern that promotes clean architecture by h...

By Misbahul Munir

1/20/2022
3 min read

Adapter Pattern: Making Incompatible Interfaces Work Together

After finishing the creational patterns, we now enter the world of **structural patterns** — which are all about **how classes and objects are composed** to for...

By Misbahul Munir

1/12/2022
3 min read

Prototype Pattern: Cloning Objects Like a Pro

We've reached the last creational pattern in this series! So far, we’ve explored Singleton, Factory, Abstract Factory, and Builder — each focused on **creating ...

By Misbahul Munir

1/8/2022
3 min read

Builder Pattern: Step-by-Step Object Construction

Welcome back to the design patterns series! So far, we’ve explored how to manage object creation using Singleton, Factory, and Abstract Factory. Today, we’ll co...

By Misbahul Munir

12/29/2021
3 min read

Abstract Factory Pattern: Factories Making Factories

So far, we’ve looked at Singleton, Factory, Strategy, and Decorator patterns—each solving specific design problems. Today, we’re zooming in on a creational patt...

By Misbahul Munir

12/24/2021
3 min read

Decorator Pattern: Adding Features Without Changing the Core

After exploring how to flexibly swap behaviors using the Strategy Pattern, we now venture into one of the most elegant ways to **add functionality dynamically**...

By Misbahul Munir

12/15/2021
3 min read

Strategy Pattern: Switching Algorithms at Runtime

So far in this series, we’ve explored the Singleton and Factory patterns—two of the most used creational patterns in backend development. In today’s post, we’re...

By Misbahul Munir

12/7/2021
3 min read

Factory Pattern: Your Object Assembly Line

In our previous post, we explored the Singleton Pattern—a way to ensure a single instance of a class. Today, let’s dive into another classic and practical desig...

By Misbahul Munir

12/2/2021
3 min read

Singleton Pattern: One Instance to Rule Them All

When building scalable and maintainable backend systems, one of the most powerful tools in your toolbox is **design patterns**. These are tried-and-tested solut...

By Misbahul Munir

11/28/2021
4 min read

SOLID Principles in Depth: The Dependency Inversion Principle (DIP)

After breaking apart responsibilities, refining our abstractions, and aligning behaviors through the first four SOLID principles, we now reach the architectural...

By Misbahul Munir

11/14/2021
4 min read

SOLID Principles in Depth: The Interface Segregation Principle (ISP)

As we reach the fourth letter of the **SOLID** acronym, we land on a principle that’s especially important in **microservices, SDK design, and modular backend a...

By Misbahul Munir

11/9/2021
5 min read

SOLID Principles in Depth: The Liskov Substitution Principle (LSP)

Continuing our journey through the **SOLID principles** of object-oriented design, we now arrive at the **Liskov Substitution Principle (LSP)**—a concept that’s...

By Misbahul Munir

10/29/2021
3 min read

SOLID Principles in Depth: The Open/Closed Principle (OCP)

In our journey through the SOLID principles of object-oriented design, we’ve explored the **Single Responsibility Principle (SRP)**—a foundation for clean and m...

By Misbahul Munir

10/20/2021
4 min read

SOLID Principles in Depth: The Single Responsibility Principle (SRP)

In the world of software engineering, especially when working with **object-oriented design**, the **SOLID principles** serve as a timeless guide to building ma...

By Misbahul Munir

10/6/2021
4 min read

Message Delivery Semantics in Event-Driven Architectures

In the world of **event-driven architecture (EDA)**, services communicate through events instead of direct API calls. This decoupling unlocks scalability, resil...

By Misbahul Munir

9/22/2021
4 min read

The Outbox Pattern: Reliable Messaging in Microservices

In the world of microservices, where services are often distributed and loosely coupled, ensuring **reliable communication** between them is crucial. Especially...

By Misbahul Munir

9/8/2021
3 min read

Rethinking Data: A Deep Dive into Event Sourcing in Software Engineering

Imagine this: you're managing a financial app, and a customer contacts support asking _"Why was my balance lower last Tuesday than on Monday?"_ With traditional...

By Misbahul Munir

8/29/2021
3 min read

Understanding CQRS in Software Engineering: A Practical Guide

As modern applications grow in complexity, traditional CRUD-based architectures can become bottlenecks—especially when you need to scale or maintain complex bus...

By Misbahul Munir

8/18/2021
8 min read

Distributed Transactions: 2PC & Saga Pattern

In a **Microservices Architecture**, each service typically manages its own database to ensure **loose coupling and autonomy**. However, this creates a challeng...

By Misbahul Munir

8/10/2021
3 min read

Database per Service: A Core Principle in Microservice Architecture

When transitioning from a monolith to microservices, the focus is often on decomposing services and enabling independent deployments. But there's one subtle — y...

By Misbahul Munir

8/5/2021
4 min read

Breaking the Monolith: A Pragmatic Guide to Microservices Migration

As products grow, so does complexity. Many engineering teams eventually face the challenge of migrating from a tightly coupled monolith to a distributed, micros...

By Misbahul Munir

7/31/2021
3 min read

Why Microservices and Event-Driven Architecture Matter: A Beginner’s Guide

When you’re building software, the way you organize your code and services can make or break your ability to scale, move fast, and stay efficient. In this post,...

By Misbahul Munir