skip to navigation
skip to content

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.

August 22, 2026 07:53 PM UTC


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 […]

August 22, 2026 03:51 PM UTC


Python Insider

The Python documentation is now available in Russian!

August 22, 2026 12:00 AM UTC


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.

August 22, 2026 12:00 AM UTC


Armin Ronacher

Fast and Hard Code

August 22, 2026 12:00 AM UTC

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.

August 21, 2026 01:00 PM UTC


Python Software Foundation

Announcing the PSF Board Candidates for 2026!

August 21, 2026 10:48 AM UTC


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.

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

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 21, 2026 02:11 AM UTC

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.

August 20, 2026 10:50 PM UTC


Python Software Foundation

How AWS Powers PyPI and the PSF

August 20, 2026 04:10 PM UTC


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 20, 2026 01:06 PM UTC

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.

August 19, 2026 06:57 PM UTC


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-review and 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-review again 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.


  1. 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.
  2. 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.
  3. 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.
  4. This brings back memories of another era, walking us back decades in terms of computer security.

August 19, 2026 02:14 PM UTC


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 […]

August 19, 2026 01:54 PM UTC


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?

August 19, 2026 06:00 AM UTC


Armin Ronacher

What Is Reasoning

August 19, 2026 12:00 AM UTC

August 18, 2026


PyCoder’s Weekly

Issue #748: Line Breaks, OpenCode, Segfaults, and More (2026-08-18)

August 18, 2026 07:30 PM UTC


Python Bytes

#492 Codeberg Puts Head in Sand

Topics include , Codeberg’s AI-code ban tests its role as a GitHub alternative, , , , and.

August 18, 2026 06:07 PM UTC


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.

August 18, 2026 12:00 AM UTC


Seth Michael Larson

When str.lower() is a security vulnerability in Python

August 18, 2026 12:00 AM UTC

August 17, 2026


The Python Coding Stack

Back From Holidays • SOLID Ideas, Agents, Rust

It feels good to be back from holiday.

August 17, 2026 03:14 PM UTC


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:

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 17, 2026 12:00 AM UTC

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 16, 2026 03:36 AM UTC

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 15, 2026 11:30 AM UTC

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 […]

August 13, 2026 01:41 PM UTC