All AI Posts
Spec-Driven AI Tools (Part 1)
Neil Haddley • September 29, 2026
Running OpenSpec's full propose-apply-sync-archive cycle twice, for a Programmer Mode and a Statistics Mode on a plain-JS calculator, to see whether its delta specs really do become a living, accurate source of truth
DeepSeek Harness (Part 2)
Neil Haddley • September 27, 2026
Checking whether DeepSeek Harness's everything-is-a-plugin claim extends to the model itself: pointing it at a local Ollama-served model through a custom OpenAI-compatible provider, with no DeepSeek API key at all
Agent Orchestration (Part 3)
Neil Haddley • September 24, 2026
Finding a real agent through a2a-registry.org, then orchestrating it from a LangGraph graph with a local Ollama model: discover the Agent Card, delegate over A2A, verify the reply against the official source, and pause for human approval
Agent Orchestration (Part 2)
Neil Haddley • September 24, 2026
What the A2A (Agent2Agent) protocol is, how it differs from MCP, and running the official Python helloworld sample end to end — a real agent server, agent card discovery, raw JSON-RPC calls, and both streaming and non-streaming client requests
Agent Orchestration (Part 1)
Neil Haddley • September 24, 2026
Comparing three LangChain multi-agent patterns, subagents, skills and handoffs, on eleven conversations that need a clarifying question or a follow-up, plus a reproducible tool-call crash traced to one specific structural cause
Model Context Protocol (Part 4)
Neil Haddley • September 19, 2026
Connecting Claude Code to Business Central's built-in MCP server
Model Context Protocol (Part 3)
Neil Haddley • September 18, 2026
Building a Retrieval-Augmented Generation stack and finally exposing the search function to Claude Code over MCP
Distillation (Part 2)
Neil Haddley • September 15, 2026
Turning a pretrained base model into a chat model with LoRA on a 64GB Mac Studio, then testing whether a second teacher, DeepSeek, produces a better one than GPT-3.5 did
Distillation (Part 1)
Neil Haddley • September 13, 2026
How DeepSeek stands accused of breaking OpenAI's terms of service.
MiniGPT (Part 6)
Neil Haddley • September 10, 2026
Sliding-window attention in MLX — why a naive window mask saves nothing, how chunked attention makes it O(T), and where full attention runs out of room on a 64 GB Mac
MiniGPT (Part 5)
Neil Haddley • September 10, 2026
Knowledge-distillation pre-training at toy scale — training a small MiniGPT against a larger model's token probabilities, why the teacher cannot be Qwen3 or Llama, and the finding that a 33M model that knows the domain beats a 1.5B model that does not
MiniGPT (Part 4)
Neil Haddley • September 9, 2026
Swapping MiniGPT's 2017 Transformer block for the modern one — RMSNorm, rotary position embeddings, SwiGLU, and grouped-query attention — in MLX, then ablating each change to see which one actually matters
MiniGPT (Part 3)
Neil Haddley • September 9, 2026
Porting the MiniGPT model and training loop from PyTorch to Apple's MLX — unified memory, lazy evaluation, mx.compile, and fused attention — then running both on the same M1 Max and comparing tokens per second and peak memory
MiniGPT (Part 2)
Neil Haddley • September 9, 2026
Replacing MiniGPT's 65-character tokeniser with a real byte-level BPE — borrowing GPT-2's, training an 8k one, and comparing all three on TinyStories in bits per byte on an Apple M1 Max
MiniGPT (Part 1)
Neil Haddley • September 9, 2026
Running Jibin Joseph's MiniGPT notebook locally on an Apple M1 Max — rebuilding a GPT-style character-level language model from first principles and reproducing the Tiny Shakespeare results
Claude Code (Part 15)
Neil Haddley • September 4, 2026
Using Claude Code to detect, program, and debug a Arduino TinkerKit LCD Module
Agentic AI for Professionals (Part 4)
Neil Haddley • August 26, 2026
Building a Brief Builder feature into nsw-legal-research-assistant, inspired by Thomson Reuters CoCounsel Legal's newly announced Brief Builder — intake, candid argument proposals, a plain-English NSW Caselaw search a non-specialist would actually type, citation-graph leads pulled straight out of a judgment's own text, and a fourth argument grounded on two authorities it never had to fetch itself
DeepSeek Harness (Part 1)
Neil Haddley • August 23, 2026
Giving DeepSeek Harness a product requirements document and a product design document for a faithful browser recreation of the 1978 Taito Space Invaders, and watching it build the game and then verify its own work
Agentic AI for Professionals (Part 3)
Neil Haddley • August 19, 2026
Giving nsw-legal-research-assistant a real interface and an MCP server exposing the same skill to Claude Code, then running it through the same demo Thomson Reuters used to introduce CoCounsel, live, with real output — grounded Q&A, pinpoint citations, Review, and skill-chaining drafting
Agentic AI for Professionals (Part 2)
Neil Haddley • August 18, 2026
Building the RAG core of a legal research assistant entirely on a 32GB M4 MacBook Air — page-safe chunking, a provider-agnostic LLM layer, and citations that can't be hallucinated
Agentic AI for Professionals (Part 1)
Neil Haddley • August 18, 2026
Using a structured LLM-wiki research process to study Thomson Reuters CoCounsel's architecture, then turning that research into an implementation plan for a simplified legal research assistant
Space Invaders
Neil Haddley • June 19, 2026
Building a Space Invaders clone three ways: OpenCode with Big Pickle, OpenCode with DeepSeek V4 Pro, and Claude Code with Sonnet 4.6
Plants vs. Zombies Clone
Neil Haddley • June 16, 2026
Vibe coding a vanilla JS Plants vs. Zombies clone with Claude Code, complete with Playwright visual regression tests
Local Agent
Neil Haddley • June 14, 2026
A conversational AI assistant for this blog using WebLLM (in-browser) and a self-hosted Ollama server (Hosted, public, HTTPS) as interchangeable backends
Claude Code (Part 14)
Neil Haddley • June 4, 2026
Using the page-line-summary skill in Claude Code to generate a deposition summary from a transcript PDF
Claude Cowork (Part 1)
Neil Haddley • June 4, 2026
Using the page-line-summary skill in Claude Cowork to generate a deposition summary from a transcript PDF
Claude Code (Part 13)
Neil Haddley • June 3, 2026
Building a Claude Code skill that generates Dataverse solution XML for Power Platform
Claude Code (Part 12)
Neil Haddley • May 8, 2026
Using the DeepSeek API with Claude Code as a cheap, fast alternative to local models
LLM Wiki
Neil Haddley • April 20, 2026
Building a Claude Code-powered personal knowledge base inspired by Andrej Karpathy's LLM Wiki — ingesting PDFs, emails, and notes into structured wiki pages
Claude Code (Part 11)
Neil Haddley • April 10, 2026
Running Claude Code against a local Ollama model (qwen3-coder:30b) instead of the Anthropic API — no API costs and no data leaving the machine
Paperclip
Neil Haddley • March 28, 2026
Open-source orchestration for zero-human companies
Claude Code (Part 10)
Neil Haddley • March 18, 2026
An AI agent for Dynamics 365 Sales Professional
Azure Foundry
Neil Haddley • March 10, 2026
Creating an AI agent in Azure AI Foundry backed by Azure AI Search with vector embeddings for retrieval-augmented generation (RAG)
Claude Code (Part 9)
Neil Haddley • February 22, 2026
Using an AI coding agent to create an AI coding agent
Power Automate
Neil Haddley • February 17, 2026
Connect Power Automate to Azure AI Foundry
Claude Code (Part 8)
Neil Haddley • February 1, 2026
Building a Scheme-like LISP interpreter with a Jupyter-style notebook UI in pure HTML/CSS/JS — guided entirely by Claude Code from first prompt to deployed app
Claude Code (Part 7)
Neil Haddley • January 26, 2026
Adding the Context7 MCP server to Claude Code to inject real-time, version-specific library docs and reduce stale training data errors
Claude Code (Part 6)
Neil Haddley • January 21, 2026
Creating custom slash commands in .claude/commands/ to package project-specific context and workflows into a single reusable shortcut
Claude Code (Part 5)
Neil Haddley • January 21, 2026
Using Claude Code's Plan Mode (read-only exploration before edits) and Extended Thinking to handle complex tasks more carefully
Claude Code (Part 4)
Neil Haddley • January 21, 2026
Pre-approving trusted shell commands and file operations in Claude Code's settings to stop repetitive permission prompts
Claude Code (Part 3)
Neil Haddley • January 21, 2026
Managing Claude Code's context window with ESC ESC rewind, /compact summarisation, and /clear reset to keep long sessions accurate
Claude Code (Part 2)
Neil Haddley • January 21, 2026
Using CLAUDE.md to give Claude Code persistent memory about your project — setup, conventions, and rules that Claude reads automatically every session
Claude Code (Part 1)
Neil Haddley • January 20, 2026
Getting started with Claude Code — Anthropic's agentic CLI that reads your project files, writes and edits code, and runs commands from a single prompt
Voice Kit (Part 4)
Neil Haddley • December 14, 2025
Automatically Boot your Raspberry Pi 3 into Google Voice Assistant
MLX 1
Neil Haddley • November 6, 2025
Using Apple's MLX framework to run and fine-tune large language models efficiently on Apple Silicon Macs
Voice Kit (Part 3)
Neil Haddley • October 18, 2025
Adding Commands
Voice Kit (Part 2)
Neil Haddley • October 16, 2025
Google Assistant API
Voice Kit (Part 1)
Neil Haddley • October 11, 2025
Raspberry Pi Voice Kit
OpenAI
Neil Haddley • October 3, 2025
Creating custom ChatGPT assistants (GPTs) for specific purposes using OpenAI's GPT builder — no coding required, available with ChatGPT Plus
Copilot Studio Agent Tools
Neil Haddley • September 24, 2025
Connected to Business Central
Model Context Protocol (Part 2)
Neil Haddley • September 21, 2025
Building a Model Context Protocol (MCP) server for Microsoft Business Central from scratch, deploying it to Azure Container Apps over Streamable HTTP, and connecting it to Copilot Studio and LM Studio
Customer Copilot Studio
Neil Haddley • September 20, 2025
Business Central Customer Copilot Using Copilot Studio
Model Context Protocol (Part 1)
Neil Haddley • August 13, 2025
Building a Model Context Protocol (MCP) server from the TypeScript quick start, adding a multiplication tool, testing it with MCP Inspector, and calling it from Visual Studio Code's chat
SharePoint Syntex
Neil Haddley • July 30, 2025
Autofill columns
Internet of Things (Part 3)
Neil Haddley • March 1, 2025
Arduino Nano 33 BLE Sense
Azure AI service
Neil Haddley • February 4, 2025
Using Azure OpenAI Service to access OpenAI's GPT-4 and GPT-3.5 models through the Azure AI Foundry portal
Prompt Flow (Part 6)
Neil Haddley • September 1, 2024
Building a multi-step AI chat workflow in VS Code using Prompt Flow, Semantic Kernel, and Planner
Prompt Flow (Part 5)
Neil Haddley • September 1, 2024
Creating and deploying an AI chat application with Azure Prompt Flow and LangChain in Azure AI Studio
LangChain Agents
Neil Haddley • August 25, 2024
Building LangChain agents that use LLMs as a reasoning engine to choose which tools to call, execute them, and loop until the task is complete
Prompt Flow (Part 4)
Neil Haddley • August 24, 2024
Using Semantic Kernel's planner to automatically orchestrate multiple AI plugins so an agent can combine them to achieve a user's goal
Prompt Flow (Part 3)
Neil Haddley • August 24, 2024
Using Microsoft Semantic Kernel to build a plugin-based AI agent that generates jokes, called from an Azure Prompt Flow node
Prompt Flow (Part 2)
Neil Haddley • June 12, 2024
Running an Azure Prompt Flow application inside a Docker container using the VS Code Prompt Flow extension
Prompt Flow (Part 1)
Neil Haddley • June 11, 2024
Setting up Azure Prompt Flow in VS Code to create and run sample AI applications — compared with LangChain-based alternatives
Business Central (Part 3)
Neil Haddley • May 24, 2024
PromptDialog (Part 3)
Business Central (Part 2)
Neil Haddley • May 24, 2024
Prompt Dialog (Part 2)
Business Central (Part 1)
Neil Haddley • May 24, 2024
Prompt Dialog (Part 1)
Blog Copilot Studio
Neil Haddley • March 24, 2024
Building a Business Central extension that lets BC users query this blog using a Copilot Studio chatbot backed by post content
Custom Copilot Studio
Neil Haddley • March 23, 2024
Customer Copilot
Meta
Neil Haddley • August 5, 2023
Testing local large language models on a laptop using LM Studio — download, run, and chat with Llama and other open-source models without any API keys
Colorization
Neil Haddley • August 3, 2023
colorization.ipynb
LlamaCpp
Neil Haddley • August 3, 2023
Accessing the llama.cpp model from Python
Stable Diffusion
Neil Haddley • August 1, 2023
Generating images from text descriptions using Stable Diffusion via Jupyter Notebook and Hugging Face — a deep learning text-to-image model
Object Detection
Neil Haddley • July 25, 2023
Installing OpenCV on a Raspberry Pi and using Python to build a computer vision object detection pipeline
LangChain (RAG)
Neil Haddley • July 21, 2023
Using LangChain to create a medical report application
Context Injection
Neil Haddley • July 19, 2023
How context injection works in LLM applications — injecting relevant documents, data, and instructions into the model's prompt at runtime for RAG
Sentence Similarity
Neil Haddley • July 19, 2023
Sentence Similarity
Sentiment Analysis
Neil Haddley • July 19, 2023
Sentiment Analysis
Machine Learning (Part 9)
Neil Haddley • June 17, 2022
Training a neural network on the MNIST handwritten digit dataset — 60,000 training and 10,000 test images for image classification with TensorFlow
Machine Learning (Part 8)
Neil Haddley • June 12, 2022
Stealing Baseball Signs
Machine Learning (Part 7)
Neil Haddley • June 11, 2022
Google Cloud Platform
Machine Learning (Part 6)
Neil Haddley • June 11, 2022
Splitting into training and test dataframes
Machine Learning (Part 5)
Neil Haddley • June 11, 2022
Predicting glucose levels from age using a machine learning regression model in Python, starting from an Excel dataset
Machine Learning (Part 4)
Neil Haddley • June 8, 2022
Using Google Colab (Jupyter Notebooks in the cloud) to run machine learning experiments with GPU access and no local setup required
Machine Learning (Part 3)
Neil Haddley • June 5, 2022
Creating models
Machine Learning (Part 2)
Neil Haddley • June 5, 2022
What apps can be written quickly?








