| Blog | Adam Johnson |
|---|---|
| RSS 2.0 Feed | Adam Johnson |
| web | https://adamj.eu/ |
| Last Update | 11.14.2026 |
| Posts | 94 |
| Blog | Adam Johnson |
|---|---|
| RSS 2.0 Feed | Adam Johnson |
| web | https://adamj.eu/ |
| Last Update | 11.14.2026 |
| Posts | 94 |
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 MoreOct. 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 MoreOct. 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 MoreOct. 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 MoreSept. 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 MoreSept. 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 MoreSept. 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 MoreSept. 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 MoreSept. 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 MoreAug. 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