Planet Python
Last update: August 22, 2026 09:48 PM UTC
August 22, 2026
Ned Batchelder
Micro language implementation: Calcium
I wrote a tiny language implementation: Calcium. It’s meant as a demonstration of how languages like Python are implemented. It has a tokenizer, a parser, an AST, a compiler, bytecodes, and an execution engine, all in about 300 lines of code.
I did it because I often see the question: isn’t Python interpreted? Why do people say it’s compiled? (BTW, I also answered this in an earlier blog post: Is Python interpreted or compiled? Yes.) It can be hard to explain that your Python program never becomes an explicit sequence of native CPU instructions, which is what people often think “compiled” means.
So I coded up Calcium to have on hand the next time it comes up. I think it will help to be able to show the execution engine code reading bytecodes and doing what they say.
It could also be an interesting starting point for people wanting to play with a language implementation. It has almost nothing, so there’s lots of simple things (comments?) to add.
Robin Wilson
Some recent, and not so recent, talks and activities
There has been a long gap between posts (again!), and a lot of the stuff that I’m going to talk about in this post is fairly old too. Oh well, life keeps getting in the way of blogging. Anyway, I’ve recently submitted a talk for the FOSS4G UK 2026 conference in Leeds in October, and […]
Python Insider
The Python documentation is now available in Russian!
Bob Belderbos
Unsubscribe links without a login: Django signing
Django has a signing module that makes it easy to build an unsubscribe link that works with no login and no session: token = signing.dumps(recipient.pk, salt=UNSUBSCRIBE_SALT). The token itself is the credential, and it ships with Django out of the box.
Armin Ronacher
Fast and Hard Code
August 21, 2026
Caktus Consulting Group
Fuzzy String Matching in Django and PostgreSQL
Gerald Carlton and I will be presenting on fuzzy name search at DjangoCon US 2026 on Monday, August 24, and this is the companion blog post. Searching for a person by name is harder than it looks: names might be typed differently by different operators or change over a person’s lifetime; for example, Smith could be entered as Smyth, Smythe, or Smidt, and Weiss as Weiß. Although names are particularly susceptible to misspelling, these strategies apply to all fuzzy string matching.
Python Software Foundation
Announcing the PSF Board Candidates for 2026!
Django Weblog
DSF Membership Open Space at DjangoCon US
If you are at DjangoCon US this year, join us for 45 minutes to talk about the Django Software Foundation.
- What: Django Software Foundation Membership Open Space
- When: Wednesday, August 26th, 1:00 pm to 1:45 pm
- Where: Wolf Point Ballroom, voco Chicago Downtown
- Schedule: Talks: Wednesday, Aug 26
DSF Board Directors Jeff Triplett, Abigail Afi Gbadago, and Paolo Melchiorre will be there, along with Django Fellows, Steering Council members, and other DSF members. This is an open space, not a talk. Pull up a chair and bring your questions.
What We Want to Talk About
- Fundraising and finances. We raised our 2026 goal to $500,000. We'll cover what it funds, most of it the Django Fellows, and how we are tracking against it. If your company depends on Django, or you know one that does, ask us about corporate membership and sponsorship.
- The Executive Director search. The DSF is hiring its first Executive Director, and applications are open through midnight Central Time on September 14, 2026. If you are thinking about applying, or know someone who should, ask us about the role.
- Membership. How individual membership works, how people become members, and what members do. Members vote in DSF elections, and we would like more of you to.
- Working groups and teams. You don't need to be a DSF member to join a working group, and we could use your help. Teams work a little differently, and we can explain the difference.
- The Steering Council. A short update on DEP 19, which rewrites Django's technical governance, and DEP 20, which moves Django to one feature release a year.
This is your time as much as ours. If you have a question about how the Foundation spends its money, how decisions get made, or why something is the way it is, ask it. We would rather answer a hard question in a room in Chicago than in a thread three weeks from now.
One note on scope: this session is about the Foundation, not about code. We will touch on the DEPs above, but patches, ORM internals, and your favorite ticket belong to the rest of the week.
Who Should Come
Everyone. You do not have to be a DSF member to attend: no sign-in sheet and no membership check at the door.
If you are already an Individual Member, meet the others. If you have been curious about joining, see what you would be joining. And if you use Django at work but have never thought much about the Foundation behind it, that is a fine reason to stop by.
Can't Make It?
Send anything you want raised through the Contact the DSF page, or find us on the Django Forum. We will follow up on anything worth sharing more widely.
See you Wednesday.
August 20, 2026
The No Title® Tech Blog
Optimize Images X adds internationalization
Optimize Images X, the multi-platform desktop application that helps you reduce the file size of your images on macOS, Windows and Linux, has just been updated to version 2.2.0. This new version adds full internationalization support with some initial translations, plus a handful of minor UI adjustments.
Python Software Foundation
How AWS Powers PyPI and the PSF
PyCharm
PyCharm for AI-assisted Django Workflows
The 2026 Django Developers Survey (results coming soon!) found that AI is part of the weekly or daily workflow for 90% of respondents. AI can write code quickly, but Django developers still need to understand the application, evaluate what the agent produces, and be accountable for what ships. That makes your IDE more important, not […]
August 19, 2026
Talk Python to Me
#559: 12 Things You Should (and Shouldn't) Do in AWS
Your site is down. It's 3am. Is it a bug, a bill, or a breach? You can't tell yet, and everyone is watching you find out. Matt Lea has spent fifteen years being the person companies call when an outage is costing them real money per hour, and his whole argument is that everything you'd want in that moment gets decided months earlier, on ordinary afternoons, when someone chose the convenient thing. We walk his top twelve dos and don'ts in AWS - infrastructure as code, IAM roles instead of access keys, private subnets, no wildcards, no public buckets - and I push on which of them actually matter if you're one person on a small VPS. Then we get to Cloud War Games, where Matt breaks things on purpose so your team's first real incident isn't their first incident. Let's get into it.
Anarcat
The people vs the AI overlords
Previously in this series: The Four Horsemen of the LLM Apocalypse.
In a post to oss-security, my (Debian) co-developer Russ Allbery stated that "open source software [OSS] is coming face to face with a motivation crisis that has been building for a long time". His point is essentially that large language models (LLMs1) are making the existing OSS community crisis worse. For him, it's the flood of code reviews, but he argues that varies according to people's desires, for others it's security issues and so on.
I think Russ is right, but I would argue there's something much bigger than our open communities going on here, and it's about the entire field of computing. This pressure is on all of us, regardless of whether we work on open source software or not.
How people use models
People using LLMs in their workflow have radically changed how programming works, even for people who claim to avoid vibe-coding. And I'm sorry to single out one poor maintainer here: it's not you, Brian, you're just one example among many. But this is typical use of those models nowadays:
Once it’s done, I’ll use
/code-reviewand let Claude spawn sub-agents to do a full review of the new code. This usually finds some problems, even problems that the “main” Claude instance didn’t find during its validation. I usually keep running/code-reviewagain and again after finding and fixing issues, until there aren’t any left.
Think about what that means for a minute. This is automation built to
fire up dozens of agents crunching at a problem for minutes if not
hours of GPU compute time, in parallel. This is essentially a couple
of shelves in a datacenter rack, totally maxed out on power and
cooling, abstracted behind a cute little /code-review command.
The author, here, is rightly concerned that "Anthropic could pull the rug out and require API pricing", which is perhaps a code word for "charging something closer to actual costs". Brian also pays lip service to environmental and societal costs but those are largely abstracted away, so let's keep that conversation aside here as well, as we have discussed it before anyways.
But clearly, this way of working has an (externalized) cost, to say the least.
Paying for non-free tools
For decades my work has been focused on free and open source software. I've long stopped using proprietary operating systems like Windows or Mac, and even before that switch, I was mostly using free software on those platforms, partly out of principle, but also because I was too poor. So the tools of my trade are free, and I build free tools with them.
It feels like we're going backwards: when I was in school, a millennia ago, my classmates didn't have access to a compiler and were wondering how they would scrape the money to buy a compiler like Borland's or Microsoft's. I had a compiler built into my operating system (FreeBSD at the time), so that wasn't a problem for me. For them, it was a significant expense, but at least those expenses (or more shady sourcing of programs) were a one-shot deal.
Fast forward 30 years, and software is rented: you pay monthly for Adobe's Photoshop and Microsoft's office suite just like you pay for Netflix, Disney+ or Spotify2. And now you need to add dozens (if not hundreds of dollars) of monthly credits to access LLMs on top of that.
So, now we have to pay to get anything done? This is peak enshitification of our job: first they steal our work to train their models, and then they sell it back to us at a profit.
Attacking the engineers
AI is coming for our jobs, as engineers, if not everyone, according to the narrative. For a while now, our job market has deteriorated: less jobs, for less pay. Lots of skilled engineers looking for work and finding crap jobs then still looking while working.
This is not by accident.3 We engineers have a lot of power, it is not organized, but that's just a couple of unions away (easy!). Tech overlords know this, so they are attacking our profession, directly, by forcing us to train and use models that they can control.
Even in environments where programmers are not forced to use LLMs, the mere pressure of other people's LLM-generated work is huge. One can be forced to review LLM outputs, or just peer pressured you into producing more.
We're now supposed to accelerate delivery, because models can presumably do things so much better and faster. With supply chain security becoming such a large vector that we now have worms crawling around developers accounts on NPM, increasing the delivery cadence seems like a really bad idea.4
The LLM hype is part of the larger wave of cyberwar against workers, against water, against the Earth, against all the people. This is not a matter of individually "adapting to the reality" or personal choice, but a political, social, hard problem we need to address collectively.
Previously in this series: The Four Horsemen of the LLM Apocalypse.
- I again prefer the term LLM to "AI" because models do not possess intelligence. I did use it in the title because click baiting is apparently important, but I stopped short of calling this one "Rage Against the Machines" because that would be the title of every blog post I have ever made.↩
- Yes, I know that Visual Studio is kind of free now, but I wouldn't be surprised if they turn that into a rental as well, because why not.↩
- Beyond sabotaging the job market, Sam Altman event wants to sell "intelligence as a utility" something that is just a really bad idea but especially shows how megalomaniac those people are.↩
- This brings back memories of another era, walking us back decades in terms of computer security.↩
PyCharm
What’s Fixed and Improved in PyCharm 2026.2
Across the PyCharm 2026.2 release line, we shipped 263 fixes and improvements. Many improve Python code insight directly, with more precise type inference, fewer false positives, smarter completion and imports, and more reliable refactoring. Here are some of the smaller changes you’re likely to notice in everyday Python development. SQLAlchemy 2.0 support SQLAlchemy has been […]
Python GUIs
Creating PySide6 UI without .ui / Qt Designer — Build your entire GUI in pure Python code, no .ui files required
Is it possible to write a PySide6 application without using .ui files or Qt Designer? How can I create widgets and lay out a window entirely in Python code?
Armin Ronacher
What Is Reasoning
August 18, 2026
PyCoder’s Weekly
Issue #748: Line Breaks, OpenCode, Segfaults, and More (2026-08-18)
Python Bytes
#492 Codeberg Puts Head in Sand
Topics include , Codeberg’s AI-code ban tests its role as a GitHub alternative, , , , and.
Bob Belderbos
Guardrails Protect Your Codebase. What Protects Your Judgment?
Cal Newport's On AI Coding and Its Discontents lands on an uncomfortable point: the speed AI gives you is paid for with the thinking that made us good engineers in the first place.
Read code instead of writing it and you get passive recognition where you used to have an active model of the code.
Seth Michael Larson
When str.lower() is a security vulnerability in Python
August 17, 2026
The Python Coding Stack
Back From Holidays • SOLID Ideas, Agents, Rust
It feels good to be back from holiday.
Brian Okken
Lean TDD Book Launch
Hey all. I’m super excited to announce the launch of my new book.
It’s Lean TDD: TDD Without the Waste.
That link in the last sentence is a link to leantdd.com.
There you’ll find links to all the places you can read or listen to it.
Right now, it’s available at:
- Amazon as a paperback
- Amazon as an ebook
- Audible as an audio book
- Other platforms to come later …
In the next few months, it will get onto other platforms. I’ve already had requests for Kobo, and just raw files sold through my site, and I’d also like to get it onto library platforms.
August 16, 2026
Brett Cannon
What's missing to have reproducible builds on PyPI
While writing the section of my 2026 Python Packaging Council (PPC) nomination on secure supply chain, I realized that one thing related to having a secure supply chain that we lack is a defined way to perform reproducible builds. The reason I like the idea of making reproducible builds work
August 15, 2026
Juri Pakaste
TIL: Typed do in Swift
TL;DR: Swift has do throws(MyError). It's helpful.
This is one of those "I can't believe I had missed that" things.
I've been pretty enthusiastic about adopting typed throws in Swift. If you need to process certain kinds of errors, it just makes sense to me. However, it was always a bit painful. You have this:
do {
// throwing code here
} catch {
// error is precisely typed here, assuming
// the block above throws just one type
}
… and all is fine and good, except that the "throwing code" doesn't need to
grow particularly complex before Swift decides to widen the type to any Error
and your catch block starts producing compilation errors.
When I ran into this, I'd use catch let error as MyError. Fine. Except it
isn't, because now your error-handling code is incomplete: you have to add
an unreachable catch-all block, and you're unhappy with the language and
your life choices.
I did page through the enhancement proposal when it passed through Swift Evolution, but I just never noticed that it doesn't end there. What you do in this situation is this:
do throws(MyError) {
// throwing code here
} catch {
// now the compiler doesn't get confused and
// all is well-typed unicorns and sunshine
}
Now you know too.
August 13, 2026
PyCharm
Open weight models are having a moment, driven by control, choice, and cost. Hybrid and local AI are now getting serious looks, so JetBrains teamed up with DeepLearning.AI on a free AI Coding Workflows: Hybrid to Local course that covers the ideas and options. The course is now available and uses PyCharm and its AI […]
