Interested in social justice, climate, against cars and general stupidity. Programming for the good. He/him. Programmer, gardener, cyclist and dad by day. I (help) maintain a few #Django packages such as django-debug-toolbar, html-sanitizer and others.
Public Key
npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Profile Code
nprofile1qqspwpmcv709yf6crhrfgv5llmruhwwvfc0fwuj84gfteem8eguykrgpz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dsg458fj
Show more details
Published at
2026-09-28T08:27:30Z Event JSON
{
"id": "f2c799b2a38112c64ca531e5c468dd782615248e6be60f95e42cda92c0994e52" ,
"pubkey": "170778679e5227581dc694329ffec7cbb9cc4e1e977247aa12bce767ca384b0d" ,
"created_at": 1790584050 ,
"kind": 0 ,
"tags": [
[
"proxy",
"https://hachyderm.io/users/matthiask",
"activitypub"
],
[
"client",
"Mostr",
"31990:6be38f8c63df7dbf84db7ec4a6e6fbbd8d19dca3b980efad18585c46f04b26f9:mostr",
"wss://relay.ditto.pub"
]
],
"content": "{\"name\":\"Matthias K\",\"about\":\"Interested in social justice, climate, against cars and general stupidity. Programming for the good.\\n\\nHe/him. \\n\\nProgrammer, gardener, cyclist and dad by day.\\n\\nI (help) maintain a few #Django packages such as django-debug-toolbar, html-sanitizer and others.\",\"picture\":\"https://media.hachyderm.io/accounts/avatars/109/290/769/594/077/033/original/8643b4c80f1fddf8.jpeg\",\"banner\":\"https://media.hachyderm.io/accounts/headers/109/290/769/594/077/033/original/ea6da02795ad4572.jpg\",\"nip05\":\"[email protected] \",\"fields\":[[\"Website\",\"https://406.ch\"],[\"GitHub\",\"https://github.com/matthiask\"],[\"Time zone\",\"CET/CEST\"],[\"Pronouns\",\"He/Him\"]]}" ,
"sig": "e9e48acabab77acdd27015b9da4856b88837941cc0cf77e28b67c529bf3ed4e8645410cde32ff04af8b3e055677cdf6c1fd6bc3cf67be8b622568d48f5efbed2"
}
Last Notes npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K For people liking dj-database-url, django-cache-url and packages like that: I have released an update to speckenv which also supports the new `MAILERS` configuration in Django 6.1 or better. Get it here: https://github.com/matthiask/speckenv#django_mailer_url (I'd link to https://pypi.org/project/speckenv/ but PyPI doesn't automatically add anchors for headings.) #django npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K I think this is a good take. I don't want my project managers to be taken away from me though! 😄 #nevent1q…jrcc npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K I published a blog post looking back at the recent @nprofile…7m6z Django sprint. It's the longest blog post I have ever published (except for two posts containing many code samples) https://406.ch/writing/looking-back-at-django-on-the-med-2026/ #django #DjangoOnTheMed npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K Writing down some notes for an upcoming blog post about #djangoonthemed which took place the last few days. I had a great time and I'm now enjoying the last full day in Pescara before heading back home tomorrow morning. @nprofile…7m6z https://media.hachyderm.io/media_attachments/files/117/336/756/905/405/240/original/cccf3d4211cc7fff.jpg npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…5qc7 I'm not sure I agree with this take. Disclosing contributions can make sense when debugging: I would tend to be more critical of these commits when bisecting failures later. That doesn't make sense necessarily since humans make mistakes as well. Still, it's a data point, and simply stripping the attribution doesn't improve the code in the commit at all. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K I sat down and wrote another Weeknotes entry on what I did in #Django land in the last six weeks. I should maybe rename the category to Monthnotes, but that doesn't roll of the tongue as smoothly, really. Read it here: https://406.ch/writing/weeknotes-2025-week-27/ npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K I have published a blog post describing how we use #Django 's JSON field (using django-json-schema-editor) for referencing other model instances in CMS content while preserving referential integrity: https://406.ch npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K I have finally written the #Django, #rspack and ManifestStaticFilesStorage blog post I wanted to write for a long time: https://406.ch/ The problem was always that I tried explaining how using these tools together is actually nice, but then I stumbled over the rspack configuration, and there's no way to call its configuration nice. Or is there? npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 Thank you! It has been sitting in my drafts folder for weeks, I'm really happy I managed to get it out yesterday during our co-writing session. Here's the link by the way, if anyone else is reading 🙂 https://406.ch/writing/django-javascript-modules-and-importmaps/ npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 this is the way, although I used Google Keep for this. Still haven't looked at the takeout data at all. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K Going back and forth on various ways to add importmap support to #django The initial idea of (ab)using forms.Media doesn't seem to work because loading importmaps from htmx snippets of course doesn't work. So, it has to be global... django-js-asset (https://github.com/matthiask/django-js-asset/) now supports a global importmap, and I'm still experimenting in django-prose-editor (sorry) for how to consume them. I'm very sad that using something like this would add another step to the installation process, but what can you do! Using a bundler in all projects certainly isn't easier or more straightforward... npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 But of course removing arguments and simplifying the code flow is nice and I would prefer to keep the new way only. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 Just saying, the "old" way of using `config={}` in Python code still works, I'm still using it in a few projects! What doesn't work currently is using `createEditor` in JavaScript, but bringing it back would probably mean not much more than exposing createEditor here and again allowing passing the config as an argument instead of assuming it will always be a JSON attribute on the textarea element: https://github.com/matthiask/django-prose-editor/blob/main/src/default.js npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 did it work? Should I bring back createEditor even though I don't want to use it? I feel a bit bad for breaking your stuff. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 I'm sorry in advance 😊 😅 I hope the design decisions make sense! npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K I wrote another thing about django-prose-editor and the work I've been doing recently to rewrite it on top of Tiptap (which uses ProseMirror, so it's still good): https://406.ch/writing/rebuilding-django-prose-editor-from-the-ground-up/ npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 Yes, that one has been there from day one! :) npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 I have updated the README, it now contains an example of what I'm attempting to do with the editor: https://github.com/matthiask/django-prose-editor/blob/main/README.rst#customization It's a bit involved right now. I already tried creating extensionsets etc., but I'm not convinced it really simplifies things. I want to have an easy and limited way to configure the editor from the Python side so that people do not immediately have to write JavaScript, but I'm still thinking about good ways to do that. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 right now the feature set and API are exactly the same! The only difference is an unfortunate additional ~100kb of JavaScript 😵💫 Real advantages and examples will follow 🕺🏼 npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K Doing a lot of work on django-prose-editor these days. The rewrite on top of https://tiptap.dev while keeping all features intact is done. I thought long and hard how to make the editor more extensible, but decided to rebuild instead. Tiptap has already solved that story and seems to be actually good now. (It's still using ProseMirror, and I'm keeping the ProseMirror plugins around, I'm not interested in the Tiptap pro offerings.) npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 Yes, I totally get that. There certainly is value in teaching people and being patient, but there comes a point when I worry it's not about teaching anymore but about preferences. That's definitely the moment when I add the finishing touches myself in the projects I work on. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 Yeah, it doesn't really mattter, does it? I really wish the perfectionism was tuned down a bit and people would submit the things which they seem to care about so much as fixups or as their own pull requests. Only reading some of the comments is making me feel exhausted. By the way, I'm not saying people should care less, I'm just saying that it feels like time would be better spent distributing the work some more. Django wouldn't be worse if pull requests were merged earlier. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K Django code review processes are brutal. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @nprofile…m624 I never know if Django wants to be welcoming to (relative) newcomers or if it wants to be for advanced users when reading these threads. I still think this should have been added to core and I don't really get why advanced users cannot silence the checks. It's why I added reviews early in the process. It reminds me of the time I was an elected council member. I don't have the stamina for these processes even when I understand and appreciate the reasoning. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @npub1wfj…2ewz @npub1tp2…sx9c @npub1khp…9jfl I'm definitely thinking about it. I worry about my energy levels quite a bit these days though. I also really really don't want to overrule or strongarm anyone into doing things they don't like. Especially since it will almost always be up to other people to pick up the pieces if anything breaks... I *have* been somewhat active in the community for a really long time though, so maybe... npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K Great #djangochat episode, @npub1tp2…sx9c @npub1wfj…2ewz @npub1khp…9jfl I'm now thinking that we as a community should reclaim the word "just". Just do it isn't such a bad slogan really. Yes, it always takes time and energy, and we don't always have it. I certainly don't right now. But, "just" could help us see that things do not always have to be complicated. Small steps are good. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K I heartily recommend the latest #DjangoChat episode with the #Django fellows. A great listen. I have a few thoughts about Django's backwards compatibility now. Natalia mentioned that the process should be clearer but that it shouldn't necessarily be easier to get contributions in. I'm very glad that Django is rock-solid and extremely stable, it helps a lot when running dozens of websites using it. But, now I worry that stability is emphasized a tiny bit too much. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K I wrote a blog post about django-content-editor (and by extension feincms3) now supporting nested sections in the default #Django administration interface: https://406.ch/writing/django-content-editor-now-supports-nested-sections/ npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @npub1wfj…2ewz Thanks! I didn't know that either. I'm going to drop 3.9 from many projects in the next few days :) npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K What a week. Had a mountain bike accident on Thursday in the simplest section of the trail, of course! Fell unconscious for a second while cleaning and disinfecting the wounds and hit the head on the door frame. Luckily there doesn't seem to be any lasting damage and I feel really good today. Thanks for medicine, the staff at the hospital, painkillers and a somewhat well-working insurance system. Definitely an interesting first time experience. I still wouldn't enjoy repeating it soon. npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @npub1wfj…2ewz Thank you 🥰 npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K django-rosetta is great, but it doesn't work well when using Kubernetes and read-only images. I got very annoyed at the extremely expensive Transifex and Weblate plans and the much too complicated interfaces they have. So, I've spent a few hours hacking on an alternative, here's https://github.com/matthiask/traduire https://media.hachyderm.io/media_attachments/files/112/724/105/565/179/843/original/ad9b57c8d183321b.png npub1zurhseu72gn4s8wxjsefllk8ewuucns7jaey02sjhnnk0j3cfvxsdkg2c5 Matthias K @npub1wfj…2ewz There :) https://media.hachyderm.io/media_attachments/files/112/359/531/381/078/723/original/3b17eea54da890ad.png