Advertisement · 728 × 90

Posts by Jamie Chang

Preview
PyCoder’s Weekly | Issue #725 Generators, __init__.py, Pointblank, and More

📰🐍 Get the best Python links of the week: PyCoder’s Weekly Issue #725: Generators, __init__.py, Pointblank, and More (March 10, 2026) pycoders.com/issues/725

1 month ago 3 2 0 0
Post image

created a new website allowing users to run and share FastAPI and other apps right in a browser sandbox environment:
jamie-chang.github.io/webasgi/?aut...

Read more about the design in my blog post: blog.changs.co.uk/webasgi-run-...

2 months ago 1 0 0 0
Post image

🐍📩 Pycoders Weekly (Issue 719) — Django Tasks, Dictionaries, Ollama, and More

pycoders.com/issues/719

2 months ago 4 2 0 0
Advent of Code 2025

I just completed all 12 days of Advent of Code 2025! #AdventOfCode adventofcode.com

4 months ago 3 0 0 0
Trying out marimo notebooks As we approach the holiday seasons, we get to

I tried marimo recently and I really like it. blog.changs.co.uk/trying-out-m...

4 months ago 0 0 0 0
Post image

why the f**k would cursor rebind this?

5 months ago 5 1 0 0
Fixing lazy imports: Generating Static Types Dynamically So I've just released a package called lazy-helper. This comes as lazy loading has been a hot topic once again due to the proposal PEP-810. Using...

Lazy imports in #Python are useful but limited by obscuring of typing information. In my latest blog post, I discuss a method to create typing information that more people should know about.

blog.changs.co.uk/fixing-lazy-...

5 months ago 2 0 0 0
Advertisement
Preview
Episode #271: Benchmarking Python 3.14 & Enabling Asyncio to Scale – The Real Python Podcast How does Python 3.14 perform under a few hand-crafted benchmarks? Does the performance of asyncio scale on the free-threaded build? Christopher Trudeau is back on the show this week, bringing another…

On this week's episode, @digiglean.bsky.social and I talk about loads of PEPs, more 3.14 news, and discuss what it means to have good engineering taste.

With content from: @brianokken.bsky.social @miguelgrinberg.com @changs.co.uk @davepeck.org and others not on the 🦋

5 months ago 5 3 0 0
Preview
Three times faster with lazy imports

I benchmarked --help on a CLI with the ref implementation for PEP 810 (lazy imports).

Because my CLI moved imports into functions just before they get used, I got a speedup of x1.3.

Then I moved all the imports to the top like normal, and got a speedup of x2.9!

hugovk.dev/blog/2025/la...
#Python

5 months ago 18 7 3 0
Python 3.14: 3 Asyncio Changes Python 3.14 was officially released on October 7th. There are a lot of new features and I've covered some of them before in: Python 3.14: 3...

To celebrate the release of #Python 3.14| look at the often overlooked #asyncio changes:

blog.changs.co.uk/python-314-3...

6 months ago 0 0 0 0
Preview
PEP 810: Explicit lazy imports 👋 Hi everyone, We are very exited to share with you PEP 810: Explicit lazy imports: We’re proposing an opt-in lazy import syntax that defers module loading until first use, aiming for faster startup,...

Let me post a *non*-subskeet for once... We made a thing!

discuss.python.org/t/pep-810-ex...

#Python #PEP

6 months ago 61 28 6 4
Python 3.14: 3 Smaller Features #python With a jam packed 3.14 release around the corner, it's also important to look at the smaller features coming to Python

Python 3.14: 3 Smaller Features #python

6 months ago 4 1 0 0
Asyncio backpressure - follow up Previously when discussing asyncio backpressure I've made some claims that were not necessarily complete. I said: It works well for 100s of urls...

New blog post about measuring the speed and memory performance on different asyncio baackpressure solutions.

blog.changs.co.uk/asyncio-back...

#python #asyncio

6 months ago 0 0 0 0

I'm excited to see UUID V7 being supported more universally.

For databases, UUID 7 combines the flexibility and security of UUID 4 with time based ordering making it a great choice for IDs

7 months ago 7 2 0 0
Preview
GitHub - qweeze/uring_file: Asynchronous file I/O with io_uring and asyncio Asynchronous file I/O with io_uring and asyncio. Contribute to qweeze/uring_file development by creating an account on GitHub.

I had a similar quest to find a truly async file API recently and found github.com/qweeze/uring...

7 months ago 0 0 0 0
Advertisement
Python 3.14: 3 smaller features Python 3.14 is just around the corner and it's jampacked with huge updates: Free threading and multiple interpreters? Template strings But as with...

Python 3.14: 3 smaller features share.google/j0VSOzZH2lck...

9 months ago 0 0 0 0
Preview
The lethal trifecta for AI agents: private data, untrusted content, and external communication If you are a user of LLM systems that use tools (you can call them “AI agents” if you like) it is critically important that you understand the risk of …

If you use "AI agents" (LLMs calling tools in a loop) you need to be aware of the Lethal Trifecta

Combine access to private data, exposure to untrusted content and the ability to externally communicate and an attacker can trick the system into stealing your data simonwillison.net/2025/Jun/16/...

9 months ago 297 81 7 11
First Look at MCP Previously I've played with tool calling in Langchain and Python sandboxes. But recently MCP (Model Context Protocol) is front and center. So I...

#MCP is here to stay, so I tried implementing something slightly more useful than a weather tool. See how you can use custom MCP servers to help with your github workflow:
blog.changs.co.uk/first-look-a...

10 months ago 0 0 0 0
Free threading and subinterpreter performance in 3.13 vs 3.14

Free threading and subinterpreter performance in 3.13 vs 3.14

Quick look at the state of free-threading in #python 3.14 beta

blog.changs.co.uk/python-314-s...

10 months ago 1 0 0 0
t-strings: the good and the ugly 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...

Python3.14 beta 1 is out today, I go over how to use and abuse the new t-strings:

blog.changs.co.uk/t-strings-th...

11 months ago 0 0 0 0
Preview
PEP 750 – Template Strings | peps.python.org This PEP introduces template strings for custom string processing.

t-strings are coming!

https://peps.python.org/pep-0750/

discuss.python.org/t/pep750-template-string...

1 year ago 13 13 0 1
My SQLAlchemy Cookbook #python The post contains an embedded JupyterLite notebook containing a cookbook for SQLAlchemy. It focuses on the patterns you use in everyday ORM coding.

My SQLAlchemy Cookbook #python

1 year ago 3 1 0 0
Building a DSL with Python Operators I've been a little obsessed with operator overloading lately. First using |= in sqlalchemy-builder and then using | and @ in better-functools. I...

I've been unknowingly building DSLs using operators in #Python. Here I walkthough how you might do the same!

blog.changs.co.uk/building-a-d...

1 year ago 0 0 0 0
Customising Pattern Matching Behaviour #python Jamie has been doing the [Advent of Code](https://adventofcode.com/) and two techniques that come up a lot in Python are iteration and pattern matching. This post talks about how they don't work well together and what you can do about it.

Customising Pattern Matching Behaviour #python

1 year ago 1 1 0 0
Advertisement
better-functools: Python functional fun I recently put some effort into creating better-functools. It's a package that adds some tooling for functional programming in Python. And allows...

Check out my blog post on functional programming in Python, where I talk a bit more about my new #Python package blog.changs.co.uk/better-funct...

1 year ago 1 0 0 0
Example of better-functools

Example of better-functools

Been a little obsessed with #ocaml lately, so I've tried to bring some of #functional ergonomics into #Python.

Checkout my new package better-functools
pypi.org/project/bett...

1 year ago 1 0 0 0
Pyright Playground

TIL: though functools.partial can't be expressed using #Python types, both pyright and mypy support it fully.
pyright-play.net?pythonVersio...

1 year ago 1 0 0 0
Sqlalchemy Footgun: Discarding the statement This one has frustrated me for a while. It starts off with a REST API route. For example in fastAPI @app.get(

New blog post!

Do you use #sqlalchemy? Have you run into this issue? #Python
blog.changs.co.uk/sqlalchemy-f...

1 year ago 1 0 0 0
Post image

We’re building a new static type checker for Python, from scratch, in Rust.

From a technical perspective, it’s probably our most ambitious project yet. We’re about 800 PRs deep!

1 year ago 725 104 35 34