Blog: Adam Johnson

web https://adamj.eu/
Author

Django: introducing django-launch-editor for jump-to-file debugging

Nov. 8, 2026 » Adam Johnson » [Archived Version]

I’ve made another package! django-launch-editor makes the file locations on Django’s debug error page into links that open your editor. Here’s how it looks, on a KeyError from the package’s example project: (Click to enlarge.) The change against stock Django is subtle, but can you spot …

Read More

Django: check version support with norwegianblue

Oct. 15, 2026 » Adam Johnson » [Archived Version]

Django projects end up slotting into a bunch of software release cycles: Django itself, Python, database servers, cache servers, and more. It can be hard for us developers to keep track of all of them, with their different support policies and end-of-life dates, and running an unsupported version means missing …

Read More

Django: set up its test suite with uv

Oct. 7, 2026 » Adam Johnson » [Archived Version]

When contributing to Django, you’ll want to run its test suite to check your changes. The official contributing docs cover setup in Running the unit tests, using a virtual environment and pip. Here’s an alternative guide using uv. Setup First, clone Django and change into the repository: $ git …

Read More

Django: serve apple-app-site-association and assetlinks.json

Oct. 1, 2026 » Adam Johnson » [Archived Version]

If your site has companion Apple or Android apps, you probably want links to your site to open in those apps, when installed. Both platforms support this, with Apple calling the feature Universal Links and Android calling it App Links. But an app can’t just claim to handle your …

Read More

Django: serve a security.txt file

Sept. 30, 2026 » Adam Johnson » [Archived Version]

When a security researcher finds a vulnerability in your site, they need a way to tell you about it. Without a clear contact, they may resort to guessing at addresses like security@<yourdomain>, messaging random folks on social media, or give up. And of course, in the worst case, they …

Read More

Software Engineering: join my meetup in Lisbon, 8th October

Sept. 27, 2026 » Adam Johnson » [Archived Version]

I previously announced my Python optimization workshop in Lisbon, on 10th October (which still has a few places). I am now pleased to add a Python/Django meetup on the Thursday before. Here are the details: What: Software Engineering meetup When: Thursday 8th October 2026, 18:00–20:00 Where …

Read More

Python: join my optimization workshop in Lisbon, 10th October

Sept. 18, 2026 » Adam Johnson » [Archived Version]

I’m running a workshop in Lisbon next month, and you’re invited! It’s a small, in-person, hands-on session on optimizing Python code, with a Django flavour. Here are the details: What: Python optimization workshop When: Saturday 10th October 2026, 10:00–13:00 Where: Martinhal Lisbon Oriente, Parque …

Read More

Django: serve the change password well-known URL

Sept. 15, 2026 » Adam Johnson » [Archived Version]

When a password manager detects that a user’s password has been leaked or reused, it can prompt them to change it, but the password change URL varies by site. The web’s answer to such discovery problems is the reserved /.well-known/ URL namespace (RFC 8615), home to machine-readable files …

Read More

Django: introducing django-mcpz, for making MCP servers

Sept. 14, 2026 » Adam Johnson » [Archived Version]

I made another package! Say hello to django-mcpz, for building Model Context Protocol (MCP) servers in your Django project. The package tagline is easy peasy MCP servers in Django. MCP, the place to be? MCP specifies a way for LLMs to interact with external data sources. MCP servers can expose …

Read More

Django: django-upgrade 1.32.0 out now, with 44 AI-assisted bug fixes

Aug. 17, 2026 » Adam Johnson » [Archived Version]

django-upgrade is my tool for automatically upgrading your project code for new Django versions. It rewrites your Python files to fix deprecations and adopt some new features, taking a chunk of the monotony out of upgrading between Django versions. Yesterday, I released version 1.32.0, which fixes 44 bugs …

Read More