Writing

Blog

Notes on AI engineering, LLMs, RAG and backend systems — the things I build with and think about.

01

Is an LLM 'intelligent'? How AI differs from a chair or a table

A grounded look at what 'intelligence' and 'understanding' actually mean, why a language model is more than an inert object but not a mind, and where the useful line sits for people who build with these systems.

  • AI
  • LLMs
  • Concepts
Jun 20, 20269 min
02

How FastAPI actually works: ASGI, async and dependency injection

A look under the hood of FastAPI — the ASGI contract that replaced WSGI, how the event loop turns async def into concurrency, and how Starlette, Pydantic, and dependency injection fit together over the life of a request.

  • FastAPI
  • Python
  • Backend
Jun 5, 202610 min
03

Llama 3 70B vs Claude: how to choose an LLM for your product

A grounded framework for choosing between an open-weights model you host yourself and a hosted frontier model — weighing quality, latency, cost at scale, privacy, and the operational burden that rarely makes the pitch deck.

  • LLMs
  • Architecture
  • Cost
May 22, 202610 min
04

Building with Claude and Cursor: an AI engineer's workflow

An honest account of how AI coding tools actually fit into my day — where they save real time, where they quietly cost it, and the habits around context, prompting, and review that separate a speedup from a mess.

  • Tools
  • AI
  • Workflow
May 8, 20268 min
05

What RAG really is — and when not to use it

A grounded, end-to-end look at retrieval-augmented generation — chunking, embeddings, vector search, reranking, and grounded prompts — plus an honest account of when RAG is the wrong tool.

  • RAG
  • LLMs
  • AI
Apr 24, 20269 min
06

Model Context Protocol (MCP), explained simply

MCP is an open protocol that lets LLM apps talk to external tools and data through standardized servers. Here is the host/client/server model, why it beats bespoke integrations, and a concrete example.

  • MCP
  • LLMs
  • Tooling
Apr 10, 20267 min
07

Context caching: how to cut LLM inference cost

How prompt caching reuses computed attention state for repeated prefixes, when it actually pays off, the cost math, provider support, and the pitfalls that quietly break your cache hits.

  • LLMs
  • Performance
  • Cost
Mar 27, 20267 min
08

Designing a scalable FastAPI backend

Production patterns for FastAPI that hold up under load: staying async end to end, pooling connections, keyset pagination, killing N+1 queries, offloading work to a queue, caching with Redis, and scaling out horizontally.

  • FastAPI
  • Backend
  • Architecture
Mar 13, 202610 min
09

Building LLM agents that don't fall apart in production

The agent loop is simple. Keeping it bounded, deterministic, and observable is the hard part. Guardrails, schema-validated tool calls, evals, and the failure modes that quietly wreck agents in production.

  • Agents
  • LLMs
  • Production
Feb 27, 20269 min
10

Vector databases compared: Pinecone vs FAISS vs pgvector

An honest look at three ways to store and search embeddings — a managed service, a library, and a Postgres extension — and a simple framework for deciding which one your RAG system actually needs.

  • Vector DBs
  • RAG
  • Databases
Feb 13, 20269 min

From Pseudobytes

All posts ↗

Writing from the studio I co-founded — team pieces on shipping AI in production.