Deep insights from our research and experience

Thumbnail image for Python Dependency Locking with pip-tools

Python Dependency Locking with pip-tools

Two of the biggest benefits pipenv and poetry are dependency locking and hash checking. Dependency locking means you can specify the direct dependencies your code requires, for example, celery==4.4.* and the tooling will lock, not only celery to a specific …
Thumbnail image for Single-file Python/Django Deployments

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 started working with it over a decade ago. We have virtualenv, pip, wheels, package hash verification, and lock files. Despite …
Thumbnail image for Cracking Django Password Hashes

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 coupled with django.contrib.admin. In this post, we are going to explore how it resists a potential attacker. The study below …
Thumbnail image for Saying Goodbye to BotBot.me

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 over 100 million lines for more than 400 IRC channels, primarily on the Freenode and Mozilla networks. Despite the rise …
Thumbnail image for Sandboxing Services with Systemd

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 OS. The biggest change is the move from Upstart to Systemd for managing services. It’s trivial to convert a service …
Thumbnail image for Goodbye manage.py

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 administrative tasks like Django’s included django-admin. In our last post, we discussed the merits of including a setup.py file in …