The Blog
I write about the stuff I run into building and running platforms end to end - backend architecture, data pipelines, cloud, and the odd bit of AI on top. No fluff, just what actually worked.

A simple guide to setting up a clean and productive Mac terminal using iTerm2 and Powerlevel10k, with a few useful customizations to make your everyday workflow better.

Sometimes deciding which object to create is a job in itself. The Factory pattern gives that decision one home so the rest of your code stays simple.

Deeply nested if/else blocks are hard to read and easy to break. Guard clauses flatten your logic with early returns so the happy path stays obvious.

A pure function returns the same output for the same input and touches nothing else. That single property is what makes code predictable and trivial to test.

A growing if/else chain that switches on a type is a design pattern in disguise. Here's how the Strategy pattern turns it into small, swappable pieces.

Inheritance looks tidy until the hierarchy fights you. Here's the concrete point where 'is-a' breaks and 'has-a' scales, shown with real code.

Next.JS can be used as fullstack application and it is obvious that a full-stack application must use database. In this blog we will see how we can set up postgresql with Prisma in Next.JS application.
Every post, in one place.