Recently I've been working on framework to run LLM tasks using AWS's excellent SQS. And I made the decision to write my own task framework/library as opposed to using a pre-exiting framework. I thought this would be a great opportunity to discuss the considerations and levels of abstractions involved …
read moreAsyncio is neither fast nor slow
Don't listen to random benchmarks..
I recently came across an article benchmarking Python performances in web frameworks, comparing asyncio and sync performance.
The author sets out to measure performance of FastAPI/Django web servers running with postgresql comparing async and non-async workloads. The methodology is pretty reasonable, the following is …
read moreI was wrong about Subinterpreters
... but that's actually a good thing
I've already written a ton about subinterpreters since a year ago:
- How good are sub-interpreters in Python now?
- Python 3.14: State of free threading
- Subinterpreters and Asyncio
Recently I had some time to dig a bit deeper into subinterpreters and check my understanding …
read moreTrying out marimo notebooks
As we approach the holiday seasons, we get to "enjoy" another 12 days of Advent of Code. Every year I try to do something a little different, last year I had a lot of fun solving it in Ocaml, prior years I've tried the latest Python features. This year I've …
read moreFixing 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 my package we can define lazy loaded dependencies nicely:

Coincidentally Brian Okken has recently written a blog post covering the topic of lazy loading …
read morePython 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:
What I haven't covered here are any of the asyncio changes …
read moreFinally trying out Mojo 🔥
Blog 1 year in
It's been just over a year since I started my blog. In fact, this is my 27th blog post. I thought it'd be a good time for me to share some insights on blogging.
Motivation
Recently I've been asked by some people on why I do this. I think for …
read moreAsyncio backpressure - follow up
Previously when discussing asyncio backpressure I've made some claims that were not necessarily complete.
I said:
read moreIt works well for 100s of urls but when we hit a big number like 10000s we have a problem.
The program seemingly hangs. This is because all the tasks are being created first …
Simplify lambda deployments with UV
The python packaging landscape and developer experience has shifted dramatically in the past year or so with uv's launch marked a pivotal moment. But behind the scenes many PEPs have worked to get us to this point.
One such PEP was PEP 723 – Inline script metadata which we discussed …
read more