A hand holding a typed index card at the front of an open library card catalog drawer

What Goes in CLAUDE.md, and What Belongs in an ADR

You read the previous post and pasted the why into CLAUDE.md, and now that paragraph rides along on every task the agent ever runs. The sign belongs there. The reason doesn’t.

September 9, 2026 · 8 min · Vladimir Cvetić
Four walled-off app containers, each holding its own green presence dot, with the links between them severed

Presence Was Supposed to Be Infrastructure

XMPP didn’t lose. The web turned presence into a product and rented it back to us one app at a time. Matrix isn’t the successor — it’s a different bet, and the thing it turned off is the P.

August 31, 2026 · 8 min · Vladimir Cvetić

ADRs for AI-Assisted Codebases: Write Down Why, or the Agent Will Undo It

ADRs were written for the future engineer who asks ‘why is it like this?’ That engineer is now an AI agent, it arrives in minutes instead of years, and it doesn’t ask - it refactors.

August 23, 2026 · 4 min · Vladimir Cvetić
Context is an architectural surface

Context Is an Architectural Surface

Context isn’t what you paste into the prompt. It’s what the model sees, prioritizes, and is constrained by. That’s not prompting — that’s system design.

February 23, 2026 · 5 min · Vladimir Cvetić
Why you shoud not use Firebase for your real-time chat. TLDR; Jabber is great

Why you shoud not use Firebase for your real-time chat. TLDR; Jabber is great

Many developers have fallen into the trap of using Firebase as a quick fix for real-time chat. With just a few lines of code, you can push messages to a database and have them sync across clients in real time. It’s a magical feeling – within an afternoon, you can get a basic chat working in your web or mobile app. No server code, no infrastructure headaches. Sounds too good to be true, doesn’t it?

May 27, 2025 · 13 min · Vladimir Cvetić