I write about software development, AI and LLMs, machine learning, and software architecture — sometimes math too.
Software architect, ten years. This is where the reasoning behind a decision gets written down, not just the decision — most recently at paiment and here.
RAG: the basics
5 minThe previous three posts built the retrieval half of the pipeline: chunk, embed, index, search. This one covers the other half — what retrieval-augmented generation actually does with the chunks it gets back, why grounding an LLM in retrieved text beats relying on its parametric memory, and the failure modes that are unique to this step.
Chunking: the basics
6 minBoth earlier posts in this series mentioned chunking in passing and moved on. This one stays: why a whole document embeds into one blurry vector, how fixed-size chunking with overlap works, the size/overlap tradeoff, and when to reach for something smarter than splitting on word count.
Embedding models: the basics
5 minEmbedding models turn text into vectors so that meaning becomes something you can measure with distance. A five-minute walkthrough of why we use them, how they're trained, what the major options are (OpenAI, Cohere, Voyage, open-source alternatives), and how to actually pick one.
Vector databases: the basics
5 minVector databases turn meaning into numbers via embeddings, then answer nearest-neighbour queries over them using approximate indexes like HNSW. A five-minute walkthrough of embeddings, similarity search, metadata filtering, and when a vector database is actually the right tool.
Connascence
6 minCoupling tells you two components are connected; connascence tells you what kind of connection it is, and Page-Jones's degree, locality and strength axes tell you how expensive that connection will be to change. A working note on the static and dynamic forms and the vocabulary for talking about which couplings in a codebase are actually dangerous.