Deep insights from our research and experience

User-Generated Themes with Django and CSS Variables
Consider a “white labeled” app where a CMS admin can customize the design of their public-facing dashboard. The developer is …

Dissecting a Python Zipapp Built with Shiv
In a previous post, we showed how to use shiv to bundle a Django project into a single file for …

Single-file Python/Django Deployments
This post covers portions of my talk, Containerless Django, from DjangoCon US 2018. Deploying Python has improved significantly since I …
Cracking Django Password Hashes
Most of the Django projects I work with take advantage of django.contrib.auth. It manages users and groups and is tightly …
Saying Goodbye to BotBot.me
Our venerable IRC logger, BotBot.me logged its first lines in the summer of 2012 . Since then, it has logged …
Sandboxing Services with Systemd
With Ubuntu 14.04 (Trusty) now a year away from end-of-life, we’ve been planning and performing upgrades for the soon-to-be legacy …
Logging to Systemd's Journal in Python
I’ll be the first to admit that I was skeptical about Systemd and its companion log aggregator Journald, but after …
Goodbye manage.py
Every Django project starts with a manage.py file in its root. It’s a convenience script that allows you to run …
Using setup.py in Your (Django) Project
A client recently asked me why all the Django projects we create have a setup.py in the root of the …
Django Logging, The Right Way
Good logging is critical to debugging and troubleshooting problems. Not only is it helpful in local development, but in production …