Building Agentic Systems
Short, opinionated posts on the primitives that make agentic systems reliable — hooks, loops, harness config, skills, subagents, MCP. Each with worked examples across engineering and non-engineering domains, because the same shapes apply wherever an LLM is in the loop.
60 LLM & AI Agent Interview Questions (With Answers)
Sixty questions from real AI engineer and FDE loops, each with the two-or-three-sentence answer you would actually give before the interviewer decides whether to go deeper — grouped by the eight areas they move through, from fundamentals and tradeoffs to memory, tool design, cost, evaluation, security, and the thirteen curveballs that decide most offers.
LangChain vs LlamaIndex vs LangGraph — Which One, and When
LangChain is an integration layer, LlamaIndex is a data layer, LangGraph is a control layer — comparing them head-to-head is like asking whether requests, SQLAlchemy or Celery is the best Python library. Here is the stack drawn out, a three-question decision tree, a side-by-side on the nine dimensions that decide, three worked scenarios including one that needs no framework at all, and the production shape where two of them combine.
RAG vs Fine-Tuning — A Decision Framework (and When to Do Neither)
RAG and fine-tuning are not competing implementations of one idea — they fix different defects. Retrieval changes what is in the context window; fine-tuning changes what the model does with it. Here is the ten-second test that tells them apart, a side-by-side on the eleven dimensions that decide, four worked scenarios, the cost shape nobody models up front, and the four-arm eval that ends the argument in an afternoon.
Graph Engineering — Designing What the Agent Is Allowed to Do Next
Nodes do the work, edges decide what runs next, and one state object threads through both. Here's the mental model behind graph engineering, the four patterns that cover almost every production graph — router, fan-out/join, guarded cycle, human checkpoint — with runnable LangGraph examples, a worked refund agent, an honest list of when a graph is the wrong tool, and where the same shape shows up outside LangGraph.
The Forward Deployed Engineer Interview — What They Actually Ask
OpenAI, Anthropic and Google are all hiring FDEs, and a lot of strong engineers are now interviewing for a role whose loop they have never seen. Here is the quadrant the job actually occupies, the three stages, a minute-by-minute map of the decomposition case, and why speed to architecture is the thing that sinks people.
Does the AI Engineer Interview Still Have a LeetCode Round?
One round, about 45 minutes, and almost always a data-structure design problem rather than hard dynamic programming — because the job is the plumbing around a model. Here are eight free LeetCode problems that are quietly the same problems you solve in production, and the twelve minutes of follow-up that actually decide the round.
Context Engineering — Managing the Model's Working Memory
Prompt engineering tuned one message; context engineering designs the whole information flow around a finite window. It's the discipline behind agents that survive step 30 — and the sibling to harness and loop engineering. Here's the mental model, the failure mode (context rot), and the four moves that keep the window lean.
Loop Engineering — Stop Prompting, Start Designing the System
Direct prompting still works. But the practitioners closest to the frontier — Boris Cherny at Anthropic, Peter Steinberger, Addy Osmani — have all landed on the same shift: their job is to write loops that prompt the model, not to prompt the model themselves. Loop Engineering is the layer above harness engineering, and it changes what ‘shipping with an agent’ looks like.
Skills vs Subagents vs MCP — A Decision Tree
The three extension points look interchangeable at first glance. They aren't. Skills package knowledge, subagents package isolated reasoning, MCP servers package external access. Pick the wrong one and you'll end up rebuilding it — here's a decision tree and three worked scenarios.
Harness Engineering — Configuring the Shell Around the Model
The model does the work. The harness decides what it can touch, what runs before and after, and how permissions cascade from your home directory into a specific repo. Here's the layer stack, the failure modes of the wildcard permission, and a starter config that scales past one project.
Hooks in Claude Code — The Automation Layer Most People Skip
Hooks let Claude Code fire a shell command on tool events — before an edit, after an edit, when a run finishes. Used well, they replace half the ‘please format this’ / ‘don't touch .env’ nudges you type today. Here's the mental model, the JSON contract, and three worked examples.