Tool calling without giving the model the keys
Build local notes tools in Go, validate every model request, and keep file creation behind separate human approval.
I’m a backend and platform engineer in Nairobi. I build APIs, developer tools, and cloud services with Go, Python, and TypeScript.
My work includes Microsoft Graph SDKs and the platforms behind Microsoft 365 and Copilot. This is where I write about what I’m building and learning. More about me.
Build local notes tools in Go, validate every model request, and keep file creation behind separate human approval.
Run a small model locally, inspect its requests and responses, understand JSONL, and build a Go harness with conversation history and a restricted tool.
What agents do, how skills help them, and where A2A, MCP, AG-UI and ACP fit, with practical examples.
How generative AI learns and produces content, what changed with modern models, and when simpler software is a better choice.
How language models predict text, learn from data, and run on hardware, with diagrams and references.
Find more in AI Notes and Writing.
I built an asynchronous Python client for M-Pesa APIs to explore concurrent I/O and type hints. The library is open source, with usage documentation for integrating mobile payments.
I packaged Tesseract OCR for AWS Lambda to extract text from document images. The project includes the deployment setup and a function that returns English text from an image.
I turned a layout inspired by Ben Hoyt’s website into a reusable Hugo theme for my own site. It’s an open-source experiment in templates and static site generation.
Browse all projects or my code on GitHub.
I read, play football, and travel with friends. I’m also learning Kenyan Sign Language, slowly. Elsewhere has the personal lists and links.
I’m open to consultation and part-time work. Get in touch if you have a project in mind.