What is a VPC Endpoint in AWS?

What is a VPC Endpoint in AWS?

A VPC Endpoint is a service that allows you to privately connect your Virtual Private Cloud (VPC) to supported AWS services without using: This means your traffic never leaves the AWS network, which: VPC endpoints are powered by AWS PrivateLink (for interface endpoints), enabling secure and private communication between services. How VPC Endpoint Works Explanation […]

Understanding Serverless and AWS Lambda

Understanding Serverless and AWS Lambda

What is Serverless? Let’s start with the concept of serverless computing. The term serverless can be misleading. It does not mean there are no servers. Instead, it means you don’t have to manage servers. The cloud provider takes care of infrastructure tasks like provisioning, scaling, and maintenance. This allows developers to focus purely on: For […]

JavaScript – Coercion

A massive misconception among developers is that == checks for value equality while === checks for value and type equality. The accurate explanation is that == allows coercion in the equality comparison and === disallows coercion’

Serverless is not free — it’s a different kind of cost

Everyone sells serverless as ‘pay only for what you use’. But nobody talks about the cognitive overhead: cold starts, DLQ monitoring, distributed tracing across 10 Lambdas, and the fact that debugging is a completely different discipline. The cost moved from infra bills to engineering hours.

RxJS is still misunderstood after all these years

Most Angular developers I have mentored treat RxJS like a fancy callback. The shift to thinking in streams — composing, transforming, and timing data flows — takes months. But once it clicks, it changes how you design the entire state layer of an application.

interface vs. types in TS

The main concept interfaces offer over types is declaration merging. On the other side, types can do a lot more than interfaces (mapped types, conditional types, etc)

Monorepos are an organisational decision, not a technical one

You do not adopt Nx because it is cool. You adopt it when the pain of coordinating shared libraries across separate repos outweighs the simplicity of isolation. The tooling is good, but the real win is making team boundaries explicit through code structure.

Infrastructure-as-Code is a contract

When I write a CDK stack, I am not just provisioning resources. I am writing a contract: this is what the system looks like, reproducibly, forever. Drift from that contract is technical debt with real operational consequences. Treat it like application code — review it, test it, version it.

The best architecture decisions happen in boring meetings

Not in design docs or ADRs (though those matter). The real decisions happen in a 30-minute Slack call where someone says ‘should we really add another service for this?’ and the team actually stops to think. Slow down those conversations. They are cheaper than the refactor later.