Tech News Aggregator

Updated: 2026-11-09 04:31 PM CT
Catch the import. Name the culprit. Keep threads free: Introducing gilguard
[Michael Kennedy Codes] Catch the import. Name the culprit. Keep threads free: Introducing gilguard

TL;DR: gilguard is a tiny, zero-dependency package for free-threaded Python (3.13t, 3.14t, 3.15t). Import it first. If any later import quietly turns the GIL back on, you get an error naming the exte...

Chameleon templates, modernized: chameleon-rs
[Michael Kennedy Codes] Chameleon templates, modernized: chameleon-rs

tl;dr; chameleon-rs is my Rust implementation of Chameleon for Python web apps. It runs existing templates unchanged, with faster rendering, async support, and support for free-threaded Python. The C...

Talk Python Membership is Live
[Michael Kennedy Codes] Talk Python Membership is Live

Over at Talk Python, we just launched Talk Python Membership. This is a community of Python developers, data scientists, and AI enthusiasts. It’s built around 4 pillars: monthly live tech meetups, a c...

What the pls?
[Michael Kennedy Codes] What the pls?

🔔 Update (June 30, 2026) Great news, the maintainer, Dhruv Bhanushali (@dhruvkb), saw this post and is fixing the PyPI confusion. The Rust version is being published to PyPI agai...

Cutting Python Web App Memory Over 31%
[Michael Kennedy Codes] Cutting Python Web App Memory Over 31%

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...

Raw+DC Database Pattern: A Retrospective
[Michael Kennedy Codes] Raw+DC Database Pattern: A Retrospective

TL;DR; After migrating three production Python web apps from MongoEngine to the Raw+DC database pattern, I measured nearly 2x the requests per second, 18% less memory, and gained native async support....

Replacing Flask with Robyn wasn't worth it
[Michael Kennedy Codes] Replacing Flask with Robyn wasn't worth it

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 ...

Use Chameleon templates in the Robyn web framework
[Michael Kennedy Codes] Use Chameleon templates in the Robyn web framework

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...

Fire and forget (or never) with Python’s asyncio
[Michael Kennedy Codes] Fire and forget (or never) with Python’s asyncio

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...

Will AI Kill Open Source?
[Michael Kennedy Codes] Will AI Kill Open Source?

TL;DR; No - AI won’t kill open source, but it will reshape it. Small, single-purpose packages (micro open source) are likely to languish as AI agents write trivial utility code on the fly. But major f...