I grew up in both the UK and China. So I'd like to think I have a little understanding of both cultures. China uses both the western gregorian calendar and a version of lunar calendar called 农历. This means I have a Chinese lunar birthday as well as a …| Jamie's Blog
There's mixed feedback to Asyncio in the community. Some people passionately hate it whilst others believe "writing async make program go fast". This debate is way too much for me to cover here right now. Though maybe I'll look at it in the future. For me I use asyncio a …| Jamie's Blog
Short update since First Look at MCP. Docker has released it's MCP toolkit which includes a catalog of MCP servers as well as helpers to connect...| blog.changs.co.uk
Previously I've played with tool calling in Langchain and Python sandboxes. But recently MCP (Model Context Protocol) is front and center. So I tried to create my own github MCP in Python to integrate cursor with the github cli. What is MCP? Before we get started, its good to familiarise …| Jamie's Blog
In my posts earlier this year I talked about the parallelism performance on 3.13 free-threaded builds. In particular I looked at solving an advent...| blog.changs.co.uk
This one's hot off the press as the first beta for Python 3.14 (aka. π-thon) has hit. We're looking at a chunky release with a lot of new...| blog.changs.co.uk
This PEP introduces template strings for custom string processing.| Python Enhancement Proposals (PEPs)
You're probably thinking that there are already plenty of tools written in Python. But I see that most of the popular tools like mypy and flake8 are built for development environments. In contrast, general purpose cli tools tend to be built in other languages, for example most of the docker …| Jamie's Blog
I've been a little obsessed with operator overloading lately. First using |= in sqlalchemy-builder and then using | and @ in better-functools. I didn't actually know that these qualify as DSLs, specifically what's known as "internal DSLs". Funnily enough, I'm usually not a fan of DSLs. A few reasons come to mind: DSLs …| Jamie's Blog
I recently put some effort into creating better-functools. It's a package that adds some tooling for functional programming in Python. And allows...| blog.changs.co.uk
This one has frustrated me for a while. It starts off with a REST API route. For example in fastAPI @app.get(| blog.changs.co.uk
Free-threaded Python (PEP-703) was released in October 2024. It enables true multi-threaded execution without the restriction of the GIL. I...| blog.changs.co.uk
better-functools: Python functional fun| blog.changs.co.uk
better-functools: Python functional fun| blog.changs.co.uk
--- Day 6: Guard Gallivant ---| adventofcode.com
I've been experimenting with Langchain for GPT based queries. One problem we often encounter with GPT is hallucinations. This makes certain...| blog.changs.co.uk