2024-11-20
Weeknotes (2024 week 47)
I missed a single co-writing session and of course that lead to four weeks of no posts at all to the blog. Oh well. Debugging I want to share a few debugging stories from the last weeks. Pillow 11 and Django’s get_image_dimensions The...
2024-10-23
Weeknotes (2024 week 43)
I had some much needed time off, so this post isn’t that long even though four weeks have passed since the last entry. From webpack to rspack I’ve been really happy with rspack lately. Converting webpack projects to rspack is...
2024-09-25
Weeknotes (2024 week 39)
CSS for Django forms Not much going on in OSS land. I have been somewhat active in the official Django forum, discussing ways to add Python-level hooks to allow adding CSS classes around form fields and their labels. The discussion on...
2024-09-13
django-content-editor now supports nested sections
django-content-editor (and it’s ancestor FeinCMS) has been the Django admin extension for editing content consisting of reusable blocks since 2009. In the last years we have more and more often started automatically grouping...
2024-09-11
Weeknotes (2024 week 37)
django-debug-toolbar alpha with async support! I have helped mentoring Aman Pandey who has worked all summer to add async support to django-debug-toolbar. Tim has released an alpha which contains all of the work up to a few days ago....
2024-08-28
Weeknotes (2024 week 35)
Getting deep into htmx and django-template-partials I have been skeptical about htmx for some time because basically everything the library does is straightforward to do myself with a few lines of JavaScript. I am a convert now because,...
2024-08-20
How I handle versioning
I have been reading up on versioning methods a bit, and I noticed that I never shared my a bit unorthodox versioning method. I previously wrote about my rules for releasing open source software but skipped everything related to...
2024-08-14
Weeknotes (2024 week 33)
Partying It’s summer, it’s hot, and it’s dance week. Lethargy is over, Jungle Street Groove is coming up. Good times. Releases django-json-schema-editor 0.1: I have finally left the alpha versioning. I’m still not committing to...
2024-07-31
Weeknotes (2024 week 31)
I have missed almost two months of weeknotes. I’ve got some catching up to do. I have tried writing a larger piece on my thoughts about CMS, but with everything going on in my personal and work life I haven’t made much progress. This...
2024-06-07
Weeknotes (2024 week 23)
Switching everything from pip to uv Enough said. I’m always astonished how fast computers can be. Releases django-admin-ordering 0.18: Added a database index to the ordering field since we’re always sorting by it....
2024-05-24
Workbench: Coffee time!
I have written about the Workbench agency software a few weeks back. Back when we were using Slack at Feinheit we used a Donut bot to generate randomized invites for a coffee break. We lost that bot when we switched to Discord. I...
2024-05-22
Weeknotes (2024 week 21)
There have been times when work has been more enjoyable than in the last few weeks. It feels more stressful than at other times, and this mostly has to do with particular projects. I hope I’ll be able to move on soon. blacknoise I have...
2024-05-03
Weeknotes (2024 week 18)
Google Summer of Code has begun We have a student helping out with adding async support to the Django Debug Toolbar. It’s great that someone can spend some concentrated time to work on this. Tim and others have done all the necessary...
2024-04-24
Workbench, the Django-based agency software
I get the impression that there’s a lot of interesting but unknown software in Django land. I don’t know if there’s any interest in some of the packages I have been working on; if not this blog post is for myself only. (Hi)story time As...
2024-04-12
Building forms with the Django admin
The title of this post was shamelessly copied from Jeff Triplett’s post on Mastodon. Why? Many websites need a simple way of embedding forms, for example as a contact form or for simple surveys to collect some data or inputs from...
2024-04-06
Weeknotes (2024 week 14)
I’m having a bit of a slow week with the easter weekend and a wisdom tooth extraction. I’m recovering quite quickly it seems and I’m glad about it. This weeknotes entry is short and quick. I’m trying to get back into the habit of...
2024-03-27
The Django admin is a CMS
The post Why is the Django Admin “Ugly”? and the discussion on Mastodon around it finally motivated me to write down my thoughts regarding the recurring theme in Django land that the Django administration interface isn’t a CMS (Content...
2024-03-20
blacknoise – ASGI app for static file serving
Note This blog post consists of the blacknoise README at the time of publishing. I have released blacknoise 1.0 in the meantime and believe that it’s actually good. blacknoise is an ASGI app for static file serving inspired by...
2024-03-18
Podcasts I like listening to
I discovered listening to podcasts about one year ago. Previously, I never knew why anyone would want to listen to people talk when they could listen to music or nothing, but that has changed a bit. So, here’s a list of podcasts I’m...
2024-03-16
Weeknotes (2024 week 11)
Estimates Jacob wrote an excellent post on breaking down tasks. I did like the post a lot. Maybe I’ll write a longer reply later, but for now just this. There definitely are good reasons for the pushback against estimation, and it’s...
2024-03-15
Eleven months of static site generation
Almost eleven months have gone by since I last wrote about the static site generator script I’m using for this website. What has changed in the meantime? The build script is 40 lines shorter. Code snippets are now highlighted using...
2024-03-13
django-prose-editor – Prose-editing component for the Django admin
During the last few days I have been working on a prose-editing component for the Django admin which will replace the basically dead django-ckeditor in all of my projects. It is based on ProseMirror, in my opinion the greatest toolkit...
2024-02-28
My 2024 Development Setup
I have been inspired by Jeff Triplett’s post to write this down. The main value – if there’s value at all in this post – lies in my ability to revisit it later and see if anything changed. Desk I’m using a standing desk since 2015 or...
2024-02-16
Weeknotes (2024 week 07)
This is a short weeknotes entry which mainly contains a large list of releases. The reason for the large list is that I haven’t published a weeknotes entry in weeks. Releases form-designer 0.23: Only small changes, mainly updated the...
2024-02-14
django-ckeditor
It has finally happened. The open source version of CKEditor 4 does not contain fixes for known problems, see the CKEditor 4.24.0 LTS announcement. I totally get why the CKEditor developers did this and can only thank them for all the...
2024-01-17
Weeknotes (2024 week 03)
Djangonaut Space I wish all participants a good time and much success. I do not have anything to do with it really but I enjoy the idea a lot and maybe there will be a pull request or two to review. Kubernetes After years and years of...
2024-01-03
Weeknotes (2024 week 01)
First weeknotes post for 2024! Happy new year! Looking back on 2023 Writing I have published almost 40 posts last year. That’s almost as many posts as I published in the time period from 2014 to 2023. Coworking to write more does work....
2023-12-15
Weeknotes (2023 week 50)
django-imagefield The path building scheme used by django-imagefield has proven problematic: It’s too likely that processed images will have the same path. I have changed the strategy used for generating paths to use more data from...
2023-12-13
django-json-schema-editor
I have extracted a JSON editing component based on @json-editor/json-editor from a client’s project and released it as open source. It isn’t the first JSON editing component by far but I like it a lot for the following reasons: It works...
2023-11-30
Weeknotes (2023 week 48)
A few weeks have passed since the last update. The whole family was repeatedly sick with different viruses etc… I hope that the worst is over now. Who knows. 12-factor Django storage configuration I should maybe write a longer and...
2023-11-02
Weeknotes (2023 week 44)
Unmaintained but maintained packages There’s a discussion going on in the django-mptt issue tracker about the maintenance state of django-mptt. I have marked the project as unmaintained in March 2021 and haven’t regretted this decision...
2023-10-27
Weeknotes (2023 week 43)
Switching to ruff format ruff v0.1.2 includes the beta version of the ruff formatter. It formats the code almost the same way as black, but much much faster. I have started switching projects I’m working on and the experience has been...
2023-10-19
Customize the Django admin to differentiate environments
We often have the same website running in different configurations: Once as a production site. Once as a place where editors update and preview the content. The content is later automatically (and maybe partially) transferred from this...
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-15
Why we switched from Slack to Discord at Work
We have switched from Slack to Discord at Feinheit a few years back. This post explores the history, the reasons for the switch and what we learned in the meantime. The early days In the early days we used Skype group chats. I don’t...
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-26
How ruff changed my Python programming habits
ruff isn’t just a faster replacement for flake8, isort and friends. With other Python-based formatters and linters there’s always a trade off between development speed (waiting on git commit is very boring) and strictness. ruff is so...
2023-07-21
Weeknotes (2023 week 29)
I have mainly done work in private projects this week. Not much to talk about. Except for the ZIP file content-type bug which was interesting enough to justify its own blog post. Releases django-cabinet 0.13: I converted the package...
2023-07-18
Serving ZIP files using Django
I have generated ZIP files on the fly and served them using Django for a time. Serving ZIP files worked well until it didn’t and browsing StackOverflow etc. didn’t produce clear answers either. The development server worked fine,...
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-31
Unlearning SCSS to use CSS variables effectively
SCSS variables are a way to stop repeating the same values over and over. They are very useful already, especially when used together with some of the more interesting SCSS functions such as brighten(), darken() etc. CSS doesn’t really...
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-21
Weeknotes (2023 week 16)
Experiments with Stable Diffusion A friend and myself threw a few scripts together to automatically finetune a Stable Diffusion model using images downloaded from Google Image search. It’s terrifying how easy and fast generating fake...
2023-04-19
The insides of my static site generator
Last sunday I wrote that I’m now using a hacky ~200 LOC Python script to generate this blog. The ~200 LOC became a challenge to myself immediately and I started refactoring the code while adding additional features, adding a licensing...
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-15
Static site generation
I did what I threatened (myself) to do: I replaced the Django code base for this weblog with a static site generator. My main goal was to preserve as much as possible of the existing structure, including the Atom feeds and the IDs of...
2023-04-07
Run less code in production or you’ll end up paying the price later
At work we do have the problem of dependencies which aren’t maintained anymore. That’s actually a great problem to have because it means that the app or website ended up running for a long time, maybe longer than expected initially. I...
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-12
Leaving Twitter
I have been more or less regularly using Twitter since 2009. I enjoyed it, sometimes more, sometimes less. I liked a lot that Twitter offered me a way to follow the thoughts and works of interesting people. It surfaced ways of thinking...
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...
2022-08-19
Managing complexity and technical debt by releasing Open Source Software
When working on projects for our clients I often try to keep as much code as possible in third party packages; I often even create packages for Django apps even when I do not expect to use the code in more than one project at all. One...
2022-08-18
Configuring Django backends using speckenv’s 12factor support
There are many many 12factor utility apps available to configure databases, caches and the email backend in Django apps, for example dj-database-url, django-cache-url and dj-email-url. As I wrote in my 2020 blog post Using environment...
2022-08-17
Generating XLSX (or CSV) from the Django admin (or elsewhere)
The blog post Django: excel output instead of csv inspired me to write about my own experience with XLSX or CSV generation. XLSX export For a long time I used similarly structured ad-hoc code built on xlwt, a project which looks...
2022-05-11
Recent objects using several Django models
I released a new Python package which builds on the excellent code published by Simon Willison in the blog post Building a combined stream of recent additions using the Django ORM. The rationale etc. for why this is useful is described...
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-10-21
gettext, JSX and ES6 template literals
I really like using gettext to translate hardcoded strings into other languages. Django’s translations functionality relies on it as well. Unfortunately, the xgettext executable which is responsible to collect translatable strings in...
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-20
From PHP and SWISDK2 to Python and Django – 12 years later
Once at a time1 there was an agency founded by a few friends and myself. We were using PHP at the time and had our own framework, the SWISDK – Simple Web Infrastructure SDK; quite a mouthful. It supported many features which are now...
2020-09-20
django-debug-toolbar 3.0
django-debug-toolbar 3.0 is now available on PyPI. Please help with testing or with success stories or with bug reporting & squashing.
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...
2020-09-13
Using environment variables to configure Django
My preferred way to read values from the environment uses the ast module to evaluate Python literals. This means that values such as ["*"], None and True aren’t returned as strings but actually have the expected type already. A basic...
2020-09-12
Image processing and server crashes with Django
The default ImageField model and form fields do not verify that Pillow is able to actually process the image file at all. They only verify the image files’ headers. This is by design, since processing full images opens websites up to...
2019-05-17
django-debug-toolbar 2.0a1
django-debug-toolbar 2.0a1 is now available on PyPI. Please help with testing or with success stories or with bug reporting & squashing.
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
Writing documentation
Why do I like writing documentation? A good part of it is that I am writing docs for myself. Similar to writing tests or commit messages, writing docs is a way of thinking about the same issues from a different viewpoint, with a...
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-05-02
django-translated-fields – localized model fields without magic
There are many ways to save and retrieve multilingual content in a database; countless blog posts, emails and software packages have been written discussing or helping with this problem. Two main approaches exist to tackle the problem:...
2018-04-30
Using Bliss with webpack
I really like bliss. It makes writing JavaScript much more fun, and JavaScript awesomely lightweight. Also, I learnt a lot while reading the code and the documentation. However, since Bliss wants to inject itself into the global...
2018-04-20
The final INTERNAL_IPS fix for development hosts
Django’s INTERNAL_IPS setting is an ongoing source of frustration and confusion (not only, but also) for users of django-debug-toolbar, especially when using non-local addresses. This is very useful for testing a website using mobile...
2018-04-18
Offline messages for Django
django.contrib.messages is awesome. Its API surface is small, it’s fast and it does what it does really well. However, it sometimes happens that you would want to send messages to users outside the request-response cycle, for example...
2018-04-11
Django, Sitemaps and alternates
Django’s own sitemaps module is great for quickly generating sitemaps, but it unfortunately does not support more than the bare minimum of attributes. Also, it uses the template engine to create XML and this makes me sad. We had to add...
2018-04-10
Our approach to configuring Django, Webpack and ManifestStaticFilesStorage
I spent some time finding out how Django and webpack should be configured so that they work well together both in development and in production. We are now using this setup on dozens of websites, so now is a good time to write down the...
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-21
django-cabinet – A media library for Django
django-cabinet is a media library for Django implemented while trying to write as little code as possible to keep maintenance at a minimum. At the time of writing the projects consists of less than 1000 lines of code (excluding tests),...
2017-06-11
Django admin apps and Content Security Policy compliance
Since Django 1.10 the bundled admin app does not use inline JavaScript anymore. This means that a vanilla installation of django.contrib.admin without any additional apps (and additional functionality) would already be Content Security...
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...
2015-07-14
Prototyping. Writing products and the attention span
We started developing software with grandiose up front plans with durations of several months. We defined sprints, each with several goals and each going on for several weeks. We failed. Does this surprise anyone? I consider myself to...
2014-11-20
Python 3 is ready
Even complicated sites can be ported with ease to Python 3 now. Spreadsheet and PDF exports work fine with openpyxl and ReportLab. There’s no excuse for not switching if your hosting environment supports it. Ubuntu LTS 14.04 (or...
2014-08-08
flake8 and the value of standards
I really, really liked tabs for indentation. I was also convinced that my indentation style – or more generally, my coding style for that matter – was the correct one, the only one that makes sense. Coming back to old code, I can really...
2014-07-23
User registration in the age of social media platforms
Note! While I still think the ideas in this blog post are sound, the reference to django-email-registration is a bit outdated. I recommend django-authlib these days instead. When we started using Django at Feinheit, django-registration...
2014-01-14
Continuous Integration
How did I ever manage to release working packages without continuous integration? More often than not I didn’t. The first minor releases were always buggy, you had to wait until the first or second patch level if you wanted a complete...