In 2014 Yann Malet and I (with the help of the rest of the team here) wrote a book about building and scaling Django websites. It was the culmination of things we’d learned from, at the time, close to a …
Our clients come to us with a variety of existing internal teams. Sometimes we work with UI designers or brand-focused graphic designers who deliver pixel-perfect mockups. Other times the stakeholders will describe what their goals are, and we’ll be responsible …
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 …
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 …
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 …
Consider a “white labeled” app where a CMS admin can customize the design of their public-facing dashboard. The developer is tasked with saving a handful of user-populated values to the database. Colors, fonts, and perhaps a background image or two …
In a previous post, we showed how to use shiv to bundle a Django project into a single file for distribution and deployment. Running a large Python project as a single file feels like magic – which is great until …
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 …
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 …
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 …