Back to home

Writing...

Thoughts on software engineering, tech stacks, and building products.

System Design

Designing a Rate Limiter (and the Ways I Got It Wrong First)

A request-per-minute cap sounds like a one-line if statement. It isn't. A deep dive into fixed windows, sliding windows, token buckets, and why the real fight is over where the counter lives.

AI

The Bug That Made Resumter Actually Useful

I built a resume analyser, fed it my own resume, and watched it complain about a missing GitHub link that was sitting right there on the page. The fix taught me more than the feature did.

AI

The Hackathon Where I Built a Router Instead of a Tutor

Everyone at the hackathon was building an AI tutor. I built the thing that sits between the tutor and its tools. Here's what that looked like, what LangGraph gave me, and what I'd do differently.

AI

I Tried My Own Context Engineering Advice. It Went Badly.

Last week I wrote five neat rules for managing an LLM's context window. Then I applied them to a real agent and broke three things. Here's what the rules left out.

AI

Context Engineering: Your Prompt Isn't the Problem

Most bad LLM output isn't a model failure, it's a context failure. A practical guide to budgeting, retrieving, and compacting what you actually send to the model.

Productive Procrastination

The Prerequisite Trap

The coffee was hot, the terminal was clear, and the goal was set: today was the day I finally conquered System Design and Backend Systems.

TypeScript

A Simple Tool Calling

AI applications is not just wrapper, its is agentic systems, and tool orchestration is the key to unlock the full potential of AI agents.

Java

Building Book Your Show: A Robust Cinema Booking Backend

A deep dive into the architecture and features of the Book Your Show backend, built with Spring Boot and PostgreSQL.

Spring Boot

How to Learn Spring Boot in 2026

A strategic guide to mastering Spring Boot 4, Java 25, and cloud-native development in 2026.