Frameworks and SDKs
What each AI framework's core abstraction actually is, how a real project is structured around it, where the abstraction stops helping, and what it costs to leave.
There is no shortage of framework tutorials. Almost all of them are the quickstart from the README with more words, which means they go stale the week the library cuts a release and they never tell you the thing you actually need to know: what this framework’s central abstraction is, whether your application has the shape that abstraction was designed for, and what you are signing up to maintain.
These twenty pages are written the other way round. Each starts from the one idea the library is built on — a runnable, a state graph, a component pipeline, a compiled prompt, an OpenAI-compatible server — and works outward to how a project is laid out, where the abstraction runs out, and what the migration path off it looks like. Code appears where the surface has been stable for years, and where it has not, the page says so instead of guessing.
The order is not accidental. Start with whether you need a framework at all, and finish with how to get out of one without a rewrite. Those two pages are the frame for the eighteen in between.
When a Framework Earns Its Place
The four separable jobs an AI framework does, what each one costs you in lock-in, and a decision procedure that takes an afternoon rather than a quarter.
9 min read
LangChain: The Parts Worth Using
Build one document-QA app with LangChain, then strip it back, and see which imports earned their place and which were a for-loop with a class around it.
10 min read
LangGraph: An Agent as a State Machine
Nodes, edges, shared state and checkpoints — how LangGraph turns an agent into a resumable state machine, and how to restart a run that failed halfway.
10 min read
LlamaIndex for Document-Heavy Apps
The ingestion pipeline as LlamaIndex's real product — readers, nodes, metadata — and the four points where its query abstractions stop helping.
10 min read
The Vercel AI SDK End to End
The server core, the streaming protocol and the chat hook — how the three fit together in one deployed app, with tools and structured output.
10 min read
DSPy: Compiling Prompts Instead of Writing Them
Signatures, modules and optimisers — how DSPy turns prompt engineering into a search problem, and why the metric has to be written before anything else.
10 min read
Instructor and Structured Extraction
Treating a model as a typed function: how validation-error-as-retry works, how to design schemas a model can satisfy, and what retrying cannot fix.
9 min read
LiteLLM as a Provider Abstraction Layer
One call shape across providers with LiteLLM — the SDK, the proxy, what maps cleanly between providers and the fields that quietly do not.
9 min read
Haystack Pipelines for Search Applications
Haystack's component-and-connection model, why explicit wiring is checked before a run, and how to keep evaluation in the same pipeline as production.
9 min read
CrewAI and Role-Based Agent Teams
Agents, tasks and crews — what role assignment genuinely buys you, and the arithmetic showing where a crew multiplies the bill without improving much.
9 min read
Semantic Kernel for .NET and Java Teams
Why Semantic Kernel exists for enterprise .NET and Java estates: the kernel, plugins as annotated methods, and the platform integration paths.
9 min read
Hugging Face transformers: Load and Run a Model
From from_pretrained to generate, with the chat template, precision and device placement done right — and the memory arithmetic that predicts the fit.
10 min read
Serving a Model With vLLM
One GPU, one command, an OpenAI-compatible endpoint — and the four flags that decide whether it starts and how many requests it serves at once.
10 min read
llama.cpp From Source to First Token
Build it, get a GGUF, quantise it, run it — and read the timings llama.cpp prints, against a ceiling you can derive from your machine's memory bandwidth.
10 min read
Ollama in a Development Workflow
Ollama as a local development dependency: the everyday commands, Modelfiles, the two APIs it exposes, and switching local to hosted with one variable.
9 min read
Text Generation Inference in a Container
Running TGI as a container: the arguments that decide whether it starts, health checks that mean something, and why queue depth is the scaling signal.
9 min read
Sentence Transformers for Embeddings You Control
Encoding text into vectors you own: normalisation, batching, the query prefix most people miss, and fine-tuning on your own pairs.
10 min read
Tracing Your Own Calls With Langfuse
Instrumenting one app end to end — traces, spans and generations — and doing it through OpenTelemetry so the data stays yours rather than the vendor's.
9 min read
Writing an MCP Client, Not Just a Server
The client half of MCP: transports, the initialise handshake, discovery, and the permission model that decides whether a tool call is safe to make.
10 min read
Migrating Off a Framework Without a Rewrite
A strangler-fig plan for removing LangChain or any AI framework: inventory the four jobs it does, then cut at the seams in order, still shipping.
11 min read
Other topics
- LLM fundamentals & architecture
- Tokens, tokenization & context windows
- Prompt engineering
- Reasoning models & test-time compute
- Multimodal AI: vision, audio, video
- RAG & retrieval
- Embeddings & vector search
- AI agents & tool use
- Structured output & function calling
- Fine-tuning & post-training
- Inference, serving & latency
- Evaluation, benchmarks & LLM-as-judge
- Observability & LLMOps
- Hallucination & failure modes
- LLM cost engineering
- AI security & prompt injection
- Privacy, compliance & data residency
- AI governance, policy & society
- Building reliable AI applications
- AI hardware, GPUs & compute
- Open-weight models & local inference
- AI for developers & coding agents
- AI in industry: vertical playbooks
- AGI, superintelligence, alignment & the long future
- Machine learning foundations
- NLP fundamentals & classical tasks
- Data engineering for AI
- Synthetic data & dataset curation
- AI product design & UX
- Search, ranking & recommendation
- Enterprise adoption & change management
- AI careers, skills & teams
- Reading AI research
- AI in science & discovery
- Robotics & embodied AI
- AI economics, markets & business models
- AI myths, hype & media literacy
- Context engineering
- Shipping AI features: patterns & anti-patterns
- Build it: end-to-end AI tutorials
- Python for AI: hands-on recipes
- TypeScript, React and the web
- Errors and troubleshooting
- AI facts, numbers and statistics
- The history of AI
- The maths behind AI
- Architectures beyond the transformer
- Reinforcement learning
- Diffusion and generative media
- Speech, audio and voice engineering
- Benchmarks, one at a time
- AI search visibility
- Infrastructure and operations
- Databases and storage for AI
- Knowledge graphs and structured knowledge
- Classical ML in production
- Regulation, jurisdiction by jurisdiction
- Prompt recipes and pattern library
- AI for people who do not write code
- Writing, media and creative work
- Edge and on-device AI
- Interpretability and model internals
- Field notes