# Blog

Notes by Aditya Negandhi on building software and the systems behind it.

## [A Folder That Contains Nothing Is a Lie](https://www.0xadityaa.dev/blog/a-folder-that-contains-nothing-is-a-lie.md)

2026-10-10, tags: architecture, design, data-modeling, ai

Folders make you decide where something belongs before you know where you'll need it. I made that bet in a side project and it broke the whole point of it.

## [5% a Day Sounds Gentle. It Isn't.](https://www.0xadityaa.dev/blog/five-percent-a-day-sounds-gentle.md)

2026-10-10, tags: algorithms, retrieval, debugging, ai

I found a tiny age penalty in my ranking code: 5% a day. After six months it scored a perfect match at 0.0001. The maths, and why my tests never noticed.

## [Why Does Every AI Tool Forget You?](https://www.0xadityaa.dev/blog/why-ai-tools-forget-you.md)

2026-10-10, tags: ai, llm, memory, retrieval

LLMs don't remember anything. "Memory" is text an app quietly pastes into your prompt. How that works, why it stays stuck in one app, and what I measured.

## [Going Event-Driven? Read the Bill First.](https://www.0xadityaa.dev/blog/going-event-driven-read-the-bill-first.md)

2026-06-19, tags: microservices, architecture, event-driven, finops

Events are billed per event, per consumer, and per kilobyte. I did the math at three volumes so your AWS invoice doesn't have to surprise you.

## [Microservices? Do You Really Need Them?](https://www.0xadityaa.dev/blog/microservices-do-you-really-need-them.md)

2026-06-17, tags: microservices, architecture, saga, distributed-systems

Split a monolith and every multi-step operation becomes a distributed transaction. Here's why I'd hand that job to an orchestrator.

## [LLMs Don't Read Your Prompt. They Count It.](https://www.0xadityaa.dev/blog/how-llms-process-text.md)

2025-09-28, tags: llm, ai, tokens

A model never sees your text. It sees a list of integers called tokens, and that list is what you pay for and what your context limit counts.

## [Semantic Search: What It Is and How I Built It](https://www.0xadityaa.dev/blog/what-is-semantic-search.md)

2025-04-06, tags: vector embeddings, semantic search, llm, db

Semantic search matches meaning, not keywords. The embedding model was the easy bit. Picking a vector size and an index my database could serve was the job.

## [Do You Really Need AI Agents?](https://www.0xadityaa.dev/blog/do-you-really-need-agents.md)

2025-03-30, tags: llm, ai, agents, workflows

Usually not. Most LLM features are cheaper, faster, and easier to trust as a fixed workflow. Here's when an agent earns its keep.

## [What Exactly Is MCP?](https://www.0xadityaa.dev/blog/what-exactly-is-mcp.md)

2025-03-08, tags: llm, ai, mcp

MCP is a standard plug for AI tools. Write a tool once and any app that speaks the protocol can use it. What it fixes, and what it costs you.

## [What Are LLMs, and How Do You Build Stuff With Them?](https://www.0xadityaa.dev/blog/what-are-llms-and-how-to-build-apps-using-it.md)

2025-02-18, tags: llm, ai, langchain, langgraph

An LLM just predicts the next token. Everything useful is the scaffolding around it: context, tools, and memory. My map, via LangChain and LangGraph.

## [I Wrote a JSON Parser From Scratch](https://www.0xadityaa.dev/blog/implementing-a-json-parser.md)

2024-11-15, tags: computer science, typescript, parsers

A JSON parser is two small programs: a tokenizer and a recursive descent parser. I built both in TypeScript on Deno to see how they tick.

## [I Built a Spell Checker to Watch an Algorithm Think](https://www.0xadityaa.dev/blog/building-a-spell-checker.md)

2024-11-11, tags: algorithms, typescript

A spell checker is edit distance plus a dictionary. Here's how Levenshtein distance works, with code and a visualizer that shows the matrix filling in.

## [Hoisting in JavaScript, Without the Hand-Waving](https://www.0xadityaa.dev/blog/hoisting-in-js.md)

2024-09-30, tags: javascript

JavaScript registers every declaration before it runs any code. That one fact explains undefined from var, callable functions, and the temporal dead zone.

## [How JavaScript Actually Runs Your Code](https://www.0xadityaa.dev/blog/how-js-works.md)

2024-09-26, tags: javascript

Every bit of JavaScript runs in an execution context built in two passes: memory first, then code. Trace that by hand and the weird stuff stops being weird.

## [Big O, Minus the Scary Math](https://www.0xadityaa.dev/blog/understanding-big-o.md)

2024-09-23, tags: dsa, algorithms, javascript

Big O is just how much more work your code does when the input grows. Four common shapes, JavaScript examples, and what they cost at real sizes.

---

More: [Home](https://www.0xadityaa.dev/index.md) | [Blog](https://www.0xadityaa.dev/blog.md) | [Projects](https://www.0xadityaa.dev/projects.md) | [Index of every page](https://www.0xadityaa.dev/llms.txt)
