Hi, I'm Matthias

I am a founding partner of Feinheit AG and Die Bruchpiloten AG. Find me on GitHub, Mastodon, Bluesky, LinkedIn or by email.

2023-10-18
Weeknotes (2023 week 42)

Vacation in Italy We have spent a wonderful family week in Italy. The voyage by train was very comfortable and we had a great time there. I have lived close to lakes all my life but the sea is always something else. Now I enjoy the cold...

2023-10-04
Weeknotes (2023 week 40)

More work on hosting several websites from a single Django application server using feincms3-sites I have mentioned feincms3-sites last week in my last weeknotes entry; I have again given this package a lot of attention in the last...

2023-09-28
Weeknotes (2023 week 39)

Again a few weeks have passed since the last weeknotes entry :-) Moving feincms3 repositories into the feincms organization The feincms GitHub organization has seen more active days when FeinCMS 1.x was still actively developed. Since...

2023-09-20
Keep content managers' admin access up-to-date with role-based permissions

Django’s built-in permissions system is great if you want fine-grained control of the permissions content managers should have. The allowlist-based approach where users have no permissions by default and must be granted each permission...

2023-08-23
My reaction to the block-driven CMS blog post

This morning I read an interesting post on the Lincoln Loop blog called Building a Future-Proof Platform with Block-Driven CMS. It shouldn’t come as a surprise to those (few 😄) who know my work in the area of content management systems...

2023-08-20
Weeknotes (2023 week 33)

I’m not sure if I should call these posts weeknotes when I see the posting schedule, but oh well. Keep expectations up but also practice forgiveness when not meeting them, it’s fine really. py_modules using hatchling I converted...

2023-08-11
Composition over inheritance: The case for function-based views

A recent conversation with Carlton on Mastodon prompted me to write down some of my thoughts re. function- vs class-based views in Django. The early days When I started using Django some time after 0.96 and 1.0 all views were function...

2023-07-28
Weeknotes (2023 week 30)

Async Django I have used Django Channels successfully in a few projects from 2017 to 2019. A few months back I have worked with Starlette. And now I have finally started digging into using Django itself with an ASGI server, and not just...

2023-07-12
Weeknotes (2023 week 28)

Releases html-sanitizer 2.2: Made the sanitizer’s configuration initialization more strict. Strings cannot be used anymore in places where the sanitizer expects a set (resp. any iterable). It’s useful that strings are iterable in...

2023-06-30
Weeknotes (2023 week 26)

Releases I released updates to a few of my packages; I have continued converting packages to hatchling and ruff while doing that. New releases in the last two weeks include: django-tree-queries 0.15: Added a new function,...

2023-06-19
FeinCMS is a dead end (but feincms3 is not)

I wouldn’t encourage people to start new sites with FeinCMS. Five years ago I wrote that FeinCMS is used in a few flagship projects which we’re still actively developing, which means that FeinCMS won’t be going away for years to come....

2023-06-16
Weeknotes (2023 week 24)

Life happened and I missed a month of weeknotes. Oh well. django-debug-toolbar 4.1 We have released django-debug-toolbar 4.1. Another cycle where I mostly contributed reviews and not much else. Feels great :-) Going all in on hatch and...

2023-06-14
CSS variables and immutability

I have been working with SASS for a long time but have been moving towards writing CSS with a few PostCSS goodies in the last years. At first, I just replaced the $... with var(--...) and didn’t think much about it. The realization that...

2023-05-12
Weeknotes (2023 week 18 and 19)

Not much programming this week :-( oEmbed Still occupying myself with oEmbed. I have been looking at a few libraries and have rediscovered micawber which probably does everything I need. Yay, another reinvented wheel avoided. I haven’t...

2023-04-28
Weeknotes (2023 week 17)

Birthday Another year achieved. Feels the same as last year. I’m glad. feincms3-cookiecontrol I have released feincms3-cookiecontrol 1.3. Mostly cleanups since 1.2, but also a new translation (already announced here). The script size...

2023-04-16
Weeknotes (2023 week 15)

Romansh translations for feincms3-cookiecontrol and django-fineforms The feincms3 cookie control banner and django-fineforms have received a small update: Support for the Romansh language. I would be surprised if any readers of this...

2023-04-05
Weeknotes (2023 week 13 and 14)

My son will be a teenager soon My eldest is now 12 years old and will be a teenager soon. We had a good time and two nice Birthday parties, one with his friends and one with family and our friends. Good times. django-debug-toolbar 4.0...

2023-03-24
Weeknotes (2023 week 11 and 12)

Mail user agents being mail user agents django-authlib is my collection of utilities for implementing passwordless authentication, either using OAuth2 or by sending magic links by email. The latter functionality has existed for a long...

2023-03-10
Weeknotes (2023 week 10)

FeinCMS bugs FeinCMS is really stable (since there isn’t much going on) but this week a Django upgrade surfaced bugs in the datepublisher extension. The extension uses a granular_now utility to determine if a page should be shown or...

2023-03-03
Weeknotes (2023 week 8 and 9)

Last week was a short work week. We spent a few nights in the mountains. Not much snow though. Enough for some skiing and sledging. This work week was … not normal. Many meetings, not enough time to work on projects. That shortens these...

2023-02-17
Weeknotes (2023 week 7)

iOS and Kiosk mode I did some research on easy ways to put an iPad into Kiosk mode because I want to build a surveying app for an exposition. The web platform is perfect for this especially given the budget constraints… I thought What...

2023-02-10
Weeknotes (2023 week 6)

Rust I made some progress learning Rust. I don’t have to look up each character and function and am slowly getting a feel for the language, unwrapping and the borrow checker, so that’s nice. I don’t have a use for it for now, but we’ll...

2023-02-04
Weeknotes (2023 week 5)

A long time has passed since I tried writing week notes. Oh well, here we go again. No committment here, just hope. Podcasts Really got into listening to podcasts in the last few weeks. That’s new for me, I never enjoyed listening to...

2022-11-13
Moving data including deletions between the same Django app running in different environments

Many projects use different environments to stabilize the code; they have a production environment which is actually seen by users, a stage where code is tested in an environment close to production and maybe several additional...

2022-11-04
Reusable cookie consent app for Django

We at Feinheit have been working on a cookie consent app for some time. Why and what? There are many many solutions in this problem space already. We have used several scripts in the past. Some are simple banners or popups which only...

2021-04-11
Weeknotes (2021 week 13 and 14)

Sorting django-admin-ordering instances in Python code django-admin-ordering’s OrderableModel gained a __lt__ function (and functools.total_ordering) in 0.14 which allows sorting model instances in Python code. This is useful for my...

2021-03-28
Weeknotes (2021 week 12)

Not much open source work this week. The final thesis and presentation for the CAS in Interaction Design was due. I learned a lot but for now I’m just glad that it’s over. I’m looking forward to relearning how to do “nothing” on...

2021-03-21
Weeknotes (2021 week 11)

django-simple-redirects Django’s built-in django.contrib.redirects app has a hard dependency on django.contrib.sites. I’m a big fan of NOT hardcoding the current site into the database or into settings except where absolutely necessary....

2021-03-14
Weeknotes (2021 week 10)

I’m trying out the weeknotes format to hopefully write a bit more 😄. feincms3: Page types and moving torwards a 1.0 release The current beta release of feincms3 (0.90b*) introduces support for page types. This new concept unifies...

2020-09-21
Embedding videos in feincms3

I have been using oEmbed services for about 10 years now to embed content from YouTube and Vimeo on other sites, first using feincms-oembed and later using feincms3.plugins.external. This worked well enough despite some problems such as...

2020-09-17
feincms may still be relevant

Note In the following text “feincms” denotes the feincms-family of tools. Just to reiterate, new projects should use feincms3. About 10 years ago there existed a few Django-based CMS. If someone didn’t already know which to choose, the...

2020-09-15
django-tree-queries

The reason for this blog post is the recent release of django-tree-queries 0.4. django-tree-queries allows using an SQL database to retrieve tree nodes in depth-first search (DFS) order. Other libraries Many Django libraries exist...

2018-09-30
I just learned about Wagtail's StreamField

Just read and learned about Wagtail’s StreamField – interesting. Good to see that more Django-based CMS systems are leaving the oversized rich text editor behind, as FeinCMS/feincms3 does since 2009.

2018-09-23
Bringing FeinCMS and django-content-editor/feincms3 closer together

If I had more time those are the features I would try to implement next: Reimplement FeinCMS’s TreeEditor using django-mptt’s DraggableMPTTAdmin This shouldn’t be a big effort. The toggleable booleans are probably the only feature from...

2018-09-22
What did FeinCMS get right?

Here’s a list of things FeinCMS got right. The list will never be exhaustive. Sites are different. Building a framework and not a single product covering all use cases is still a good idea. Also, we are building on top of Django, so we...

2018-09-22
The state of things in FeinCMS 1.x land

FeinCMS is still in active use, but not very actively developed. This does not have to be a bad thing – FeinCMS is compatible with the recently released Django 2.1 back to Django 1.7, it works well and it’s pain points are generally...

2018-09-22
The other future of FeinCMS: django-content-editor and feincms3

The FeinCMS ItemEditor code lives on in a new project, django-content-editor1. By contrast feincms3 is a completely new project, which was the result of starting to build websites with a stripped down environment of...

2018-09-22
The future of FeinCMS

A recent exchange in an issue in the elephantblog repository on Github asking whether the project was still alive and my own work on feincms3 made me think about the need to clarify my position on the future of FeinCMS 1.x. In the issue...

2018-04-09
Open source activity (April 2018 edition)

Again months have gone by without a new post. Still trying to change this, so here’s a summary. django-imagefield A more opinionated version of django-versatileimagefield, which keeps the amount of code in production at a minumum has a...

2017-12-06
My rules for releasing open source software

I maintain and help maintain quite a few Open Source Python packages. Possibly well-known packages include django-debug-toolbar, django-ckeditor, django-mptt, and FeinCMS resp. feincms3. Open source development used to stress me...

2017-06-05
Low maintenance software

I’m passionate about writing low maintenance software. To achieve this software must be simple, opinionated, and often written as a library, not a framework. While it seems easier to write a framework with extension points it is, in the...