Writing
Notes and longer pieces on what I'm building and learning.

Decouple the data from the artefact
For branded, template-heavy outputs like decks and dashboards, keep the artefact out of the model entirely: strip its data to JSON, let the agent update only that, and plug it back into the untouched shell.

Every agent needs a human: the sponsor model in Azure AI Foundry
Agent identities in Azure AI Foundry are bound to a named human sponsor who owns their access, configuration and lifecycle, and Foundry suspends the agents when that person leaves.

AI webapps beat AI APIs, and the gap is the harness
Why the same model feels smarter in ChatGPT or Claude than through your API call, and the five pieces of engineering you have to rebuild yourself to close the gap.

Microsoft AI Foundry, in plain terms
A tour of AI Foundry's model catalog, agent service and resource hierarchy, and why it replaces jumping across separate Azure services.

What are AI agents, really?
Reasoning, tool use and memory are the three capabilities that separate an agent from a plain LLM call, RAG, or a fixed pipeline.

Infrastructure as Code is a good friend of AI engineers
A RAG chatbot touches a dozen services with configuration that matters. IaC is how you deliver the same setup to the next team without starting from scratch.

Tables are the culprits in document parsing
Six lessons from production document intelligence work on why tables break parsers, and what actually helps: specialised document AI, vision LLMs for rectification, and per-cell confidence scores.

Building a RAG chatbot on AWS, team-only and audit-ready
An eight-step, do-this path for a private, AWS-native RAG chatbot with memory, sessions and citations: S3, Bedrock Knowledge Base, guardrails, Cognito, DynamoDB and a single-Lambda chat API.

Step Functions and Azure Durable Functions for multi-step AI workflows
Workflow infrastructure for AI: branching, retries, parallel processing and human-in-the-loop review, with a real batch-document use case on AWS Step Functions.

Lambda and Azure Functions: the event-driven starting point for AI workloads
Moving an AI POC to production usually starts here: pay only for what runs, zero infrastructure, and a hard timeout ceiling the moment your workflow needs more than one step.

AI Gateways: the command centre for enterprise AI
As every team rolls out its own chatbots and agents, simple questions - what are we spending, which models are in use, are we auditable - get hard fast. An AI Gateway is the central entry point that keeps them answerable.
DiffusionGemma and the return of diffusion models for language
Google's DiffusionGemma refines a whole block of text in parallel instead of predicting one token at a time - strong for interactive editing, weaker for deep reasoning.

Context rot and the rise of context engineering
Context overload and "lost in the middle" are pushing the field from prompt engineering toward context engineering: harnessing, scaffolding, shrinking, isolating, off-loading and caching.
Agentic identity will be a 2026 focus
With 2026 shaping up to be the year of multi-agent systems, agentic identity is becoming a major focus area, and Okta's move into the space is a good sign.

File search vs. RAG
A quick take on how managed file-search tools compare to building your own retrieval pipeline.
Running local LLMs on your NPU with FastFlowLM
For Copilot+ PCs, FastFlowLM leverages the NPU to run local LLMs beyond the built-in Copilot features: think Ollama, but on your NPU.

A neuro-symbolic approach to modular prompts
Parlant flips the script on AI agent development: instead of hoping your LLM follows instructions, it teaches principles the agent actually sticks to.

Markdown is taking over document formats in the AI era
Traditional document formats ruled for decades. Markdown, paired with diagram languages like Mermaid, is lightweight, structured and built for LLMs to reason with.
Document intelligence is still one of the most impactful AI use cases
A quick note on why document intelligence remains one of the most common and impactful applications of AI in industry today.
Reward models are quietly becoming the most important part of LLM progress
Pre-training is slowing down as the internet stops growing as fast as new LLMs launch. Maybe today's new releases are less new base models, more better reward models.
AWS AgentCore Gateway for production-ready agentic solutions
AgentCore Gateway masks the heavy lifting of turning any API or Lambda into an MCP, with semantic search enabling automatic tool discovery.
Running an on-device LLM on your phone with ChatterUI
A quick test of Phi-3-mini-4k-instruct running locally on a Google Pixel 9 through ChatterUI: clone the repo, or just install the APK and download a GGUF model.
Logprobs is one of the most valuable LLM features, and it's disappearing
GPT-5 and all Claude models have dropped logprobs support; only Gemini still offers it.
LangChain's Prompt Library, while everyone else chases marketplaces
A place to learn, contribute, and stay informed about prompting: a different angle from the rush toward agent marketplaces and model catalogs.
Getting customer-facing chatbots right
Three things that matter most: a detailed system prompt, layered guardrails beyond the defaults, and fine-tuning on real, human-reviewed conversations.
Fine-tuning isn't dead, it's just not the default anymore
In-context learning won the spotlight from today's decoder LLMs, but fine-tuning still wins on consistency, control and deep domain knowledge.
Why "act as an 8-year-old" changes everything about a response
The answer is attention. A closer look at why self-attention and parallel processing make Transformers respond so differently to a persona instruction, even after a long prompt.

Memory in LLM applications
LLMs are stateless by default. Memory is what turns them into coherent chatbots, personalized assistants and multi-turn applications, within context window and token-cost limits.
Attention is the most important idea behind prompting
To get the best results from an LLM, you need to guide its attention to the important parts of the prompt and stop it from getting distracted.

Prompt caching for large-scale prompting
When you keep repeating the same context or instructions across queries, prompt caching cuts cost and latency by reusing the static parts.
A good GraphRAG tutorial from OpenAI Academy
Worth a look if you're exploring graph-based retrieval as an alternative to plain vector search.

Evaluating LLM-based applications
LLMs are stochastic: a correct response can look completely different each time. The right evaluation approach starts with one question: do you have ground truths?
Awesome MCP Servers, 14k stars and growing
A growing GitHub collection of Model Context Protocol server implementations, worth bookmarking if you're building with MCP.