My experience at PyCon US 2026
I'm writing this post on the flight back from PyCon US 2026 in Long Beach, California. It was my second time attending PyCon, and it was a fantastic conference - a cornocopia of Python knowledge, but...
View ArticleBuilding MCP servers with Entra ID and pre-authorized clients
The Model Context Protocol (MCP) gives AI agents a standard way to call external tools, but things get more complicated when those tools need to know who the user is. In this post, I’ll show how to...
View ArticleDo stricter MCP tool schemas increase agent reliability?
MCP servers contain tools, and each tool is described by its name, description, input parameters, and return type. When an agent is calling a tool, it formulates its call based on only that metadata;...
View ArticleCan MCP choose my outfit?
When I was a kid, one of my first Java applets was a UI for choosing outfits by mixing and matching different articles of clothing. Now, with the advent of agents and MCP, I realized that I could make...
View ArticleLearnings from the PyAI conference
I recently spoke at the PyAI conference, put on by the good folks at Prefect and Pydantic, and I learnt so much from the talks I attended. Here are my top takeaways from the sessions that I watched:AI...
View ArticleUsing on-behalf-of flow for Entra-based MCP servers
In December, we presented a series about MCP, culminating in a session about adding authentication to MCP servers. I demoed a Python MCP server that uses Microsoft Entra for authentication, requiring...
View ArticleWatch the recordings from my Python + MCP series
MCP is one of the fastest growing technologies in the Generative AI space this year, and the first AI related standard that the industry has really embraced wholeheartedly. I just gave a three-part...
View ArticleWatch the recordings from my Python + AI series
My colleague and I just wrapped up a live series on Python + AI, a nine-part journey diving deep into how to use generative AI models from Python. I gave the english streams while my colleague Gwen...
View ArticleFilter the tools from MCP servers
What I like about MCP servers: they give me lots of great tools that can make my agents more powerful, with very little work on my side. 🎉What I don't like about MCP servers: they give me TOO many...
View ArticleHow I learn about generative AI
I do not consider myself an expert in generative AI, but I now know enough to build full-stack web applications on top of generative AI models, evaluate the quality of those applications, and decide...
View ArticleGPT-5: Will it RAG?
table.evalresults { background: #FAFAFA; /* pale neutral for table body */ width: 100%; border-collapse: collapse; } table.evalresults th, table.evalresults td { border: 1px solid #ddd; padding: 8px;...
View ArticleRed-teaming a RAG app: gpt-4o-mini v. llama3.1 v. hermes3
When we develop user-facing applications that are powered by LLMs, we're taking on a big risk that the LLM may produce output that is unsafe in some way - like responses that encourage violence, hate...
View ArticleAutomated repo maintenance via GitHub Copilot coding agent
I have a problem: I'm addicted to making new repositories on GitHub. As part of my advocacy role at Microsoft, my goal is to show developers how to combine technology X with technology Y, and a...
View ArticleTo MCP or not to MCP?
When we're building automation tools in 2025, I see two main approaches:Agent + MCP: Point an LLM-powered Agent at MCP servers, give the Agent a detailed description of the task, and let the Agent...
View ArticleMCP: Bringing mashups back!
In the summer of 2006, I discovered the blossoming world of web APIs: HTTP APIs like the Flickr API, JavaScript APIs like Google Maps API, and platform APIs like the iGoogle gadgets API. I spent my...
View ArticleGetting a hysterectomy: My reasons and recovery
Back in 2014, I had a brush with cervical cancer. We fortunately caught it when it was stage 0, the point at which it's not even called cancer, and is called adenocarcinoma instead. I went in for...
View ArticleProficient Python: A free interactive online course
There are many ways to learn Python online, but there are also many people out there that want to learn Python for multiple reasons - so hey, why not add one more free Python course into the mix? I'm...
View ArticleTeaching Python with Codespaces
Whenever I am teaching Python workshops, tutorials, or classes, I love to use GitHub Codespaces. Any repository on GitHub can be opened inside a GitHub Codespace, which gives the student a full Python...
View ArticleA visual introduction to vector embeddings
For Pycon 2025, I created a poster exploring vector embedding models, which you can download at full-size. In this post, I'll translate that poster into words.Vector embeddingsA vector embedding is a...
View ArticleUsing DefaultAzureCredential across multiple tenants
If you are using the DefaultAzureCredential class from the Azure Identity SDK while your user account is associated with multiple tenants, you may find yourself frequently running into API...
View Article