All articles tagged Development

Thumbnail image for Python Package Manager Shootout

Python Package Manager Shootout

tl;dr I built a benchmark for Python Package managers, you can view it at https://lincolnloop.github.io/python-package-manager-shootout/ When starting a new Python project, you have a few different options for how you want to manage your dependencies. Like Node.js has npm, yarn, …
Thumbnail image for Distributed Locking in Django

Distributed Locking in Django

As you start scaling an application out horizontally (adding more servers/instances), you may run into a problem that requires distributed locking. That’s a fancy term, but the concept is simple. Sometimes you have to be sure that when a block …
Thumbnail image for Goodconf: A Python Configuration Library

Goodconf: A Python Configuration Library

I’ve been working quite a bit lately on streamlining Lincoln Loop’s standard deployment systems. One thorn we’ve always had is how to handle application configuration. In the past, we would have our configuration management system write the configuration out to …
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 …