tl;dr; I cut 3.2 GB of memory usage from our Python web apps using five techniques: async workers, import isolation, the Raw+DC database pattern, local imports for heavy libraries, and disk-based cach...
If you read my Fire and Forget (or Never) about Python and asynchronous programming, you could think it’s a super odd edge case. But a reader/listener, Richard, pointed me at Will McGugan’s article Th...
TL;DR; I converted Python Bytes from Quart/Flask to the Rust-backed Robyn framework and benchmarked it with Locust. There was no meaningful speed or memory improvement - and Robyn actually used more ...
TL;DR; Chameleon-robyn is a new Python package I created that brings Chameleon template support to the Robyn web framework. If you prefer Chameleon’s structured, HTML-first approach over Jinja and wan...
TL;DR; Python’s asyncio.create_task() can silently garbage collect your fire-and-forget tasks starting in Python 3.12 - they may never run. The fix: store task references in a set and register a done...
Have you heard that the age of hyper-personal software is upon us? Typically what people mean is that agentic AI allows the creation of simple and small software built by individuals, often not super ...
Recently I have started going Raw+DC on my databases. I think I love it. Let me explain. TL;DR; After 25+ years championing ORMs, I’ve switched to raw database queries paired with Python dataclasses. ...
I’ve been bewildered by the wide range of experiences that software developers observe when working with AI. This has led many of us to outright reject AI for coding. There are reasons for this varian...
TL;DR: You can’t stop people from using AI or put it back in the box. Blocking AI crawlers feels satisfying but just makes you invisible to users who rely on AI recommendations. This post covers the ...
TL;DR: Run pip-audit in an isolated Docker container before installing updated dependencies on your dev machine. Build a reusable pipauditdocker image and alias pip-audit-proj to test requirements.tx...